gpt4 book ai didi

java - 在 Java8 中连接对象数组列表

转载 作者:行者123 更新时间:2023-11-29 02:58:31 25 4
gpt4 key购买 nike

我有一个包含在对象中的一维数组列表,我想使用 java-8 流将它们收集到一个数组中并收集。

给定类 Item 的数组

class A{
int x;
}


class Item{
A[] parts=new A[];
public A[] getParts(){
return parts;
}
}

所以如果我有列表 l

List<Item> l=new ArrayList<>();
l.add(new Item());
l.add(new Item());

我需要将这两个对象的内容收集到一个 A 类型的数组中。

所以如果第一个项目有 parts={1,2} 和第二个项目 parts={3,4} 输出应该有点像

A[] out={1,2,3,4}

我试过

l.stream().map(Item::getParts).collect(Collectors.toList()).toArray(new A[n]);

但显然它有一些严重的问题。

最佳答案

将每个 Item 映射到它的 A[] 数组。然后,当有一个 A[] 流时,只需将其平面映射以获取每个数组的每个 A 并在最后使其成为一个数组。

A[] array = l.stream().map(x -> x.getParts())
.flatMap(x -> Arrays.stream(x))
.toArray(A[]::new); // [1, 2, 3, 4]

但是,如果您只对 int 值感兴趣,还有一个额外的步骤

int[] array = l.stream().map(x -> x.getParts())
.flatMap(x -> Arrays.stream(x))
.mapToInt(x -> x.getX())
.toArray();

关于java - 在 Java8 中连接对象数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36677698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com