如何与多个集合相交?

2022-09-01 20:47:47

我有这个列表:

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);
}

答案 1

你可以使用 ,在这里查看retainAll(Collection<?> c)

旁注:该操作称为交叉点

要将其转换为a,您可以使用应该在各种容器之间工作的方法。ListaddAll(Collection<? extends E> c)

例如:

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

答案 2

请参阅“retainAll()”。