Why Java provides two methods to remove element from Queue?
Java中的
在某些情况下,预计队列将为空,在这种情况下,使用不引发异常的方法是合适的。在其他情况下,队列为空是一种特殊情况,并且例外是适当的。
引发异常会导致性能下降,并且如果您希望队列不时为空,那么您就不必将队列空逻辑视为捕获异常,这既昂贵又困难阅读。
在相反的情况下,您不希望队列为空,这是编程错误或其他异常情况的征兆,并且您不想编写难看的错误条件检查代码(例如,检查表示为null),因为在这种情况下,它比捕获异常(您可以在另一个作用域中进行捕获)的可读性差。
抽象类
您可以看一下源代码:
1 2 3 4 5 6 7 | public E remove() { E x = poll(); if (x != null) return x; else throw new NoSuchElementException(); } |
因此,如您所见,
您可以使用自己喜欢的一种。
查看答案,我不清楚是做什么的,因此:
直接来自API:
仅当队列为空时,remove()和poll()方法的行为不同:remove()方法引发异常,而poll()方法返回null
当您知道如何立即做出反应和/或期望元素不存在时,请使用poll。
否则,请使用删除。
有时您希望为空队列返回空值,有时又希望将空队列视为异常情况。
在有关队列结构的经典讨论中,这两种方法的用法不同。我主要使用poll()来检索项目,如果需要在常规循环之外修改Queue,则主要使用remove()。