如何使用add和contains方法以及迭代器来计算两个集合的交集?
我有代码:
private static void intersection(Set<Comparable> setOne, Set<Comparable> setTwo){
Iterator<Comparable> iter = setOne.iterator();
Iterator<Comparable> iterator = setTwo.iterator();
while (iter.hasNext()){
if (!setTwo.contains(iter.next())){
iter.remove();
}
}
while (iterator.hasNext()){
if (!setOne.contains(iterator.next())){
iterator.remove();
}
}
setOne.addAll(setTwo);
System.out.println(setOne.toString());
}
但是,它总是返回一个空集合,这意味着即使if语句有这种情况,它也会从集合中删除元素。
您是如何运行此代码的?它运作完美。您确定要启动正确的main方法吗?您看到方括号[]还是有什么结果?您使用的数据正确吗?您如何填充组?它应该是[1、2]和[2、3]之类的东西,然后它将打印出[2]。
一种简单的方法,假设不需要按照建议的方法进行如下操作:
Set<Integer> a = new HashSet<>(Set.of(1, 2, 3, 4, 5));
Set<Integer> b = new HashSet<>(Set.of(3, 4, 5, 6, 7));
List<Integer> saveA = new ArrayList<>(a);
a.removeAll(b);
saveA.removeAll(a);
System.out.println(saveA);