如何使“相交”方法起作用?

时间:2018-11-23 20:40:18

标签: java

所以我有此方法,它不完整,因为无法使其与我拥有的设备一起使用。具有{0,1,2,7,8,9,10}的集合。 我尝试使用if / else,但是它给了我nullpointer异常错误。 我应该将HashSet对象放入数组中,然后比较这些对象吗? 请提供任何见解。

这是客户交叉点方法,其中提供了包含以下这些方法的HashSet.java文件。 1-添加方法 2-包含方法 3-删除方法

  public HashSet Intersect(HashSet s1)// only 1 & 2 should be printed
  {                
    HashSet intersect = new HashSet(buckets.length); 

    Iterator iter = this.iterator();   

    while(iter.hasNext())
    {
        intersect.add(iter.next());
    }

    Iterator iter1 = s1.iterator();
    while(intersect.contains(iter1.next()))
    {
        intersect.remove(iter.next());
    }

    return intersect;
  }

1 个答案:

答案 0 :(得分:0)

对于您的NPE问题,您应该首先阅读有关迭代器的信息。实际上,您必须始终通过 .hasNext()检查是否存在下一个元素(如果为true,则可以安全地调用 .next())。其次,紧密相关的逻辑是无效的,当您已经完全迭代了 iter 时,在调用 iter.next()时,第二个循环中问题很快就会发生。因此,下一个元素显然为null。当然,这不是您打算编写的代码。