所以我有此方法,它不完整,因为无法使其与我拥有的设备一起使用。具有{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;
}
答案 0 :(得分:0)
对于您的NPE问题,您应该首先阅读有关迭代器的信息。实际上,您必须始终通过 .hasNext()检查是否存在下一个元素(如果为true,则可以安全地调用 .next())。其次,紧密相关的逻辑是无效的,当您已经完全迭代了 iter 时,在调用 iter.next()时,第二个循环中问题很快就会发生。因此,下一个元素显然为null。当然,这不是您打算编写的代码。