Java中的Queue
实现有两种删除元素的方法,一种是引发异常的remove()
,另一种是poll()
,它为空队列返回null
。我有两个疑问:
Queue
具有不同的实现来删除元素? 最佳答案
在某些情况下,预计队列将为空,在这种情况下,使用不引发异常的方法是合适的。在其他情况下,队列为空是一种特殊情况,并且异常(exception)是适当的。
引发异常会导致性能下降,并且如果您希望队列不时为空,那么您就不必将队列空逻辑视为捕获异常,这既昂贵又困难阅读。
在相反的情况下,您不希望队列为空,这是编程错误或其他异常情况的征兆,并且您不想编写难看的错误条件检查代码(例如,检查表示为null),因为在这种情况下,它比捕获异常(您可以在另一个作用域中进行捕获)的可读性差。