Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AbstractCollection中包含()方法_Java_Collections_Contains - Fatal编程技术网

Java 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

我有一个关于AbstractCollection中包含方法的问题。 我认为上述实施等同于以下内容:

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