小编Ran*_*ili的帖子

Java 8流 - 合并两个集合,使其在特定字段中保持唯一

我有两个狗列表 - dogsList1,dogsList2
我想创建一个具有唯一名称字段的所有狗的列表.
(意思是,如果我遇到第二只同名的狗,我不会将它添加到结果列表中)

这是我在java中可以做的最好的,但它收集了唯一的名称,而不是Dogs :(
Dog包含除名称之外的其他字段)

// collect all dogs names from first list
List<String> dogNames1 = dogsList1.stream()
     .map(x -> x.getName()).collect(Collectors.toList()); 

dogList2.stream()
     .filter(x->!dogNames1.contains(x.getName()))
     .forEach( x->
            dogsList1.add(x);
     );
Run Code Online (Sandbox Code Playgroud)

可以改进吗?还有其他更好的解决方案或优化方法

java java-8 java-stream

3
推荐指数
2
解决办法
5689
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1