使用 Java Streams api 比较两个不同的 Java 集合对象与公共属性

问题描述 投票:0回答:1

我有两个包含 2 个不同对象的集合

1. Set<A> 
2. Set<B>
    class A {
       private String Id;
       private String name;
       private B objB;
    }
    
    class B {
       private String Id;
       private String email;
    }

我想检查第一个集合中 A 的任何对象在第二个集合 B 中是否具有相同的“Id”。

如果是

b.getId().contains(a.getId)
,那么B对象将被设置在A对象中。

objA.setB(objB);

基于谓词,我们如何根据匹配的“Id”属性值将 B 对象存储到 A 中(使用 Java 流)?

java lambda java-stream
1个回答
0
投票

我首先会生成一组(可能更小的)集合的 ID,例如

Set<String> aIds = setA.stream().map(a -> a.id).collect(Collectors.toSet());

然后你可以检查第二个,如下所示:

boolean anyObjectInAIsInB = setB.stream().anyMatch(b -> aIds.contains(b.id));

© www.soinside.com 2019 - 2024. All rights reserved.