【发布时间】:2021-05-05 16:32:24
【问题描述】:
我有对象列表说
class Address {
private String houseno;
private String street;
private String city;
private String landmark;
private String country;
}
class Obj1 {
private String id;
private String name;
private String mail;
private List<Address> address;
}
List<Obj1> obj1s = new ArrayList<>();
我有一个 obj1 列表,其中包含我需要使用一些过滤器提取的数据。我需要检索城市和国家不能重复的所有 obj1。如果地址列表中的任何一个包含与其他 obj1 相同的城市和国家/地区,那么我不需要在该列表中。
我正在尝试相同的方法,但不起作用。
obj1s.stream().collect(Collectors.toMap((obj1.getAddress()), p -> p, (p, q) -> p)).values();
它可以通过循环和 if else 条件来完成,但要寻找 java 流和更好的解决方案。有什么好办法解决吗?
city+country 可以在所有 obj1 中重复。在地址列表中,它将是唯一的
【问题讨论】:
-
如果城市+国家在
obj1s中的所有Obj1s 中重复,或者在Obj1对象中的所有地址中重复? -
@ernest_k,可以跨obj1s复制
-
旁白:如果将
Obj1重命名为User,这个问题就会变得更有意义。疑问:如果Obj1 a和Obj1 b的任何Address具有相同的城市+国家,您不希望这两个成为最终结果的一部分吗? -
@Naman,我想要一个成为结果的一部分,而不是重复的
-
为了清楚输入和所需的输出,最好将您的方法与您所说的循环和条件分享。
标签: java java-stream