为什么Java提供了两种方法来从队列中删除元素?
Java中的实现有两个方法来删除元素,一个是抛出异常,另一个是返回空队列。我有两个疑问:Queue
remove()
poll()
null
- 为什么有不同的实现来删除元素?
Queue
- 何时使用哪种实现?
Java中的实现有两个方法来删除元素,一个是抛出异常,另一个是返回空队列。我有两个疑问:Queue
remove()
poll()
null
Queue
在某些情况下,预计队列将为空,在这些情况下,使用不引发异常的方法是合适的。在其他情况下,队列为空是异常情况,并且异常是合适的。
引发异常会导致性能下降,如果您期望队列不时为空,则不希望必须将队列空逻辑处理为捕获异常 - 这既昂贵又难以阅读。
在相反的情况下,您不希望队列为空,这是编程错误或其他一些特殊情况的迹象,并且您不想编写丑陋的错误条件检查代码(例如检查null),因为在这种情况下,这将比捕获异常(您可以在另一个范围内执行此操作)的可读性更差。
抽象类实现并定义 remove 方法。AbstractQueue<E>
Queue<E>
你可以看看源代码:
public E remove() {
E x = poll();
if (x != null)
return x;
else
throw new NoSuchElementException();
}
因此,如您所见,方法使用方法。remove()
poll()
您可以使用自己喜欢的那个。