Java AbstractCollection中包含()方法
我有一个关于AbstractCollection中包含方法的问题。 我认为上述实施等同于以下内容:Java AbstractCollection中包含()方法,java,collections,contains,Java,Collections,Contains,我有一个关于AbstractCollection中包含方法的问题。 我认为上述实施等同于以下内容: public boolean contains(Object o) { Iterator<E> it = iterator(); if (o==null) { while (it.hasNext()) if (it.next()==null) return t
public boolean contains(Object o) {
Iterator<E> it = iterator();
if (o==null) {
while (it.hasNext())
if (it.next()==null)
return true;
} else {
while (it.hasNext())
if (o.equals(it.next()))
return true;
}
return false;
}
}
我认为没有必要使用null进行区分。为什么用null和notnull分隔?谢谢。如果集合包含null元素,则对它的调用.next将返回null。所以这个表达:
public boolean contains(Object o) {
Iterator<E> it = iterator();
while (it.hasNext())
if (it.next().equals(o))
return true;
return false;
}
}
将引发NullPointerException如果集合包含null元素,则对它的调用将返回null。所以这个表达:
public boolean contains(Object o) {
Iterator<E> it = iterator();
while (it.hasNext())
if (it.next().equals(o))
return true;
return false;
}
}
将抛出NullPointerException