java - 了解队列插入

标签 java collections

来自 Javadoc:

Queue implementations generally do not allow insertion of null elements, although some implementations, such as LinkedList, do not prohibit insertion of null. Even in the implementations that permit it, null should not be inserted into a Queue, as null is also used as a special return value by the poll method to indicate that the queue contains no elements.

应该如何解读?我们可以将空值插入到 LinkedList 中但无法将其插入 Queue , 尽管实现了 Queue通过 LinkedList .

最佳答案

这意味着如果你向一个LinkedList插入一个null,如果你调用poll并得到null,你无法判断是Queue 为空,或者 Queue 的头部有空元素。

因此,您可以将 null 插入到 LinkedList 中,但是如果您打算将该 LinkedList 用作 队列

如果你看一下 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
}

关于java - 了解队列插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28147076/

相关文章:

java - 在 Java 中缓存列表(或其他集合)的简单方法是什么

java - 将java中的日期格式从ddMMyyyy更改为dd-MM-yyyy

c# - 在 null IEnumerables 上为 Count() 返回零

c# - C# 中的类<类型>

java - App Engine - LocalDatastoreService 加载 - 无法从后备存储加载

c# - 如何使用 linq 映射两个列表

java - 设置接口(interface)问题和对象

java - 如何获取新创建的文件中的月份总数?

java - 在高阶函数中调用带有参数的 lambda

JavaFx Webview转到移动站点-(使用jdk 7)