java - 如何相交多个集合?

标签 java set intersection

我有这个 list :

private List<Set<Address>> scanList;

因此,如您所见,我的列表包含多个扫描。 每次扫描后,我都会在列表中添加新集合。

所有扫描完成后,我想只取每组中出现的地址并将其放入:

private List<Address> addresses;

Set/TreeSet/HashSet 中是否已经存在类似的东西?

编辑:回答后,retainAll() 是正确的方法。谢谢你。 以下是出处:

Set<Address> addressCross = scanList.get(0);
for (int i = 1; i < scanList.size(); i++) {
    addressCross.retainAll(scanList.get(i));
}   
for (Address address : addressCross) {
    addresses.add(address);
}

最佳答案

您可以使用 retainAll(Collection<?> c) , 看看here

附注:该操作称为intersection

然后将其转换为 List您可以使用方法addAll(Collection<? extends E> c)这应该适用于各种容器。

例如:

ArrayList<Address> list = new ArrayList<Address>();
list.addAll(yourSet);

关于java - 如何相交多个集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4009205/

相关文章:

python - 将 pandas Dataframe 的行转换为可迭代的字符串列表

algorithm - 文件的交集

java - 如何使用 Hibernate\Spring Data 将 json 转换为 java 对象数据并保存到数据库中?

python - 集合列表的减法

java - Instanceof 不显示接口(interface)的编译错误,但抽象类会显示

Mysql:当所有选定的行都符合给定条件时返回 true

mysql - 在 MySql 中合并 Bit、Enum 和 Set 字段

python - Geopandas - 在与多边形相交处分割线,在新链接属性中保留多边形 ID

java - 打印文本文件的行时,阅读器返回每行之间的行间距

java - Eclipse 氧气源水平变化