如何在Java 8中使用concat获取不同的对象列表

前端之家收集整理的这篇文章主要介绍了如何在Java 8中使用concat获取不同的对象列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有2个 Java类.
class A {
 String name;
 List<B> numbers;
}

class B {
 Integer number;
}

我希望获得A类的独特性并将其中的B列表连接起来.

例如假设我有一个包含以下对象的List.

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 collector:
Collection<A> result = list.stream()
         .collect(Collectors.toMap(a -> a.name,a -> a,(a,b) -> {a.numbers.addAll(b.numbers); return a;}))
         .values();

您可以将结果复制到List(如新的ArrayList<>(结果)),但由于我们不保留任何特定的顺序,因此使用List不是很有用.在大多数情况下,收集结果很好.

猜你在找的Java相关文章