在Java中,使用add和contains方法的两个集合的交集,带有迭代器

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

如何使用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语句有这种情况,它也会从集合中删除元素。

java iterator set
2个回答
1
投票

您是如何运行此代码的?它运作完美。您确定要启动正确的main方法吗?您看到方括号[]还是有什么结果?您使用的数据正确吗?您如何填充组?它应该是[1、2]和[2、3]之类的东西,然后它将打印出[2]。


0
投票

一种简单的方法,假设不需要按照建议的方法进行如下操作:

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

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