我有 2 个 Java 类。
class A {
String name;
List<B> numbers;
}
class B {
Integer number;
}
我想得到 A 类的不同,并在其中连接 B 的列表。
例如假设我有一个包含以下对象的列表。
List<A>{
name = "abc"
List<B>{1,2}
name= "xyz"
List<B>{3,4}
name = "abc"
List<B>{3,5}
}
结果应该是:
List<A>{
name = "abc"
List<B>{1,2,3,5}
name="xyz"
List<B>{3,4}
}
如有任何帮助,我们将不胜感激。
注意:我想使用 Java 8 流实现此功能。
谢谢
最佳答案
您可以使用 toMap
Collection 家:
Collection<A> result = list.stream()
.collect(Collectors.toMap(a -> a.name, a -> a,
(a, b) -> {a.numbers.addAll(b.numbers); return a;}))
.values();
您可以将之后的结果复制到List
中(如 new ArrayList<>(result)
),但由于我们不保留任何特定顺序,所以 List
不是很有用。在大多数情况下 Collection
结果很好。
关于java - 如何在 Java 8 中使用 concat 获取不同的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36167945/