了解队列插入

St.*_*rio 3 java collections

来自Javadoc:

队列实现通常不允许插入null元素,尽管某些实现(如LinkedList)不禁止插入null.即使在允许它的实现中,也不应将null插入到Queue中,因为null也被poll方法用作特殊返回值,以指示队列不包含任何元素.

应该如何解释?我们可以将null值插入到LinkedList但不能将其插入到Queue尽管实现Queue者中LinkedList.

Era*_*ran 7

这意味着如果你向a插入一个null LinkedList,如果你调用poll并获取null,你不能告诉它Queue是空的还是null元素位于Queue.

因此,您可以插入null到a LinkedList,但如果您打算将其LinkedList用作a ,则应避免这样做Queue.

如果你看一下执行情况poll():

public E poll() {
    if (size==0)
        return null;
    return removeFirst(); // if the first element is null, `removeFirst()`
                          // returns null, and you might mistakenly assume
                          // the Queue is empty
}
Run Code Online (Sandbox Code Playgroud)