Java中的Queue实现有两种删除元素的方法,一种是引发异常的remove(),另一种是poll(),它为空队列返回null。我有两个疑问:

  • 为什么Queue具有不同的实现来删除元素?
  • 何时使用哪个实现?
  • 最佳答案

    在某些情况下,预计队列将为空,在这种情况下,使用不引发异常的方法是合适的。在其他情况下,队列为空是一种特殊情况,并且异常(exception)是适当的。

    引发异常会导致性能下降,并且如果您希望队列不时为空,那么您就不必将队列空逻辑视为捕获异常,这既昂贵又困难阅读。

    在相反的情况下,您不希望队列为空,这是编程错误或其他异常情况的征兆,并且您不想编写难看的错误条件检查代码(例如,检查表示为null),因为在这种情况下,它比捕获异常(您可以在另一个作用域中进行捕获)的可读性差。

    09-29 23:47