Java中的Queue
实现有两种方法来移除元素,一种是抛出异常的remove()
方法,另一种是为空队列返回null
的poll()
方法。我有两个疑问:
Queue
有不同的实现来删除元素?发布于 2010-02-04 00:26:26
在某些情况下,预计队列将是空的,在这些情况下,使用不抛出异常的方法是合适的。在其他情况下,队列是空的是一种异常情况,异常是合适的。
抛出异常会导致性能损失,如果您希望队列不时为空,那么您不希望必须将队列-空-逻辑作为捕获异常来处理-它既昂贵又难以读取。
在相反的情况下,你不希望队列为空,这是编程错误的标志,或者是其他一些异常情况,你不想编写丑陋的错误条件检查代码(例如,检查null),因为在这种情况下,这将比捕获异常(这可以在另一个作用域中完成)的可读性更差。
发布于 2010-02-04 01:02:53
抽象类AbstractQueue<E>
实现了Queue<E>
并定义了remove方法。
你可以看一下源代码:
public E remove() {
E x = poll();
if (x != null)
return x;
else
throw new NoSuchElementException();
}
因此,正如您所看到的,remove()
方法使用 poll()
方法。
你可以使用你喜欢的那一个。
发布于 2012-12-21 15:57:59
看着答案,我不清楚是谁做的,因此:
remove()和()方法只在队列为空时的行为不同: remove()方法抛出异常,而()方法返回null
https://stackoverflow.com/questions/2193450
复制相似问题