Java 为什么列表中允许空值,队列接口中不允许空值?

Java 为什么列表中允许空值,队列接口中不允许空值?,java,list,null,queue,add,Java,List,Null,Queue,Add,对于初学者来说,List是允许插入null元素的有序集合。另一方面,Queue是通常不允许null元素的后进先出(LIFO)或先进先出(FIFO)集合LinkedList实现了List和Queue两种功能,因此它是唯一允许Queue作为元素的null实现 假设在Queue中不允许null的原因是poll()或peek()等方法可以返回null,如下所示: 没有更多的元素 空作为元素 *这是关于stackoverflow问题“为什么队列中不允许null”的常见答案 知道问题null会导致我们进

对于初学者来说,
List
是允许插入null元素的有序集合。另一方面,
Queue
是通常不允许null元素的后进先出(LIFO)或先进先出(FIFO)集合
LinkedList
实现了
List
Queue
两种功能,因此它是唯一允许
Queue
作为元素的null实现

假设在
Queue
中不允许null的原因是poll()或peek()等方法可以返回null,如下所示:

  • 没有更多的元素
  • 空作为元素
*这是关于stackoverflow问题“为什么队列中不允许null”的常见答案

知道问题null会导致我们进入
队列
,任何程序员都可以使用以下逻辑:

if (!queue.isEmpty()){
    queue.poll();
}

使用我刚才提供的逻辑,我们可以很容易地判断,如果我们得到null作为返回值,它将100%是元素的值,而不是null作为空队列。所以我必须再次问,在
队列中不允许null的真正原因是什么?我还遗漏了什么吗?

如果你真的想要空元素,你可以随时使用可选的。我更想知道这样一个决定的原因,而不是我自己的实现。我遵循的一条规则是:理解事物为什么起作用,而不仅仅是它如何起作用;)我还没有找到这些原因。也许是注释,以便我们可以从中学习一些东西?原因是您自己提供的:
poll
设计用于在队列中没有元素时返回
null
。时期这就是它的设计,这就是我们得到的。事实上,你可以有一个解决办法,这是无关紧要的。