我回到java中修改集合框架。我一直都知道但一直不明白的是为什么 Queue
实现有抛出异常的方法吗?
所以有 add()
, element()
以及 remove()
在另一边抛出异常 offer()
, peek()
以及 poll()
返回特殊值。在list、set和map中,从来没有这样的选项——我们只有返回一些值并且从不抛出异常的方法。
我的简单问题是为什么?怎么回事 Queue
这个特殊的集合有更通用的方法,而其他集合接口只有“返回类型方法”?我会错过什么?
1条答案
按热度按时间fdx2calv1#
我不能代表语言/数据结构设计人员发言,但我认为这是因为您所比较的对象的使用性质不同。
像set、map或list这样的对象被设计为包含信息,但是queue对象被设计为在处理之前保存元素,并且除了基本的收集操作之外,它还添加了一些额外的操作来帮助处理。
在处理时,某些情况可能需要或可能导致队列为空,这是预期的行为,在这些情况下,具有不引发异常的方法是适当和有用的。在其他情况下,开发人员可以将队列为空视为一种例外情况,例外情况是适当的。