【发布时间】:2016-02-24 21:48:20
【问题描述】:
offer() 返回boolean 而add() 抛出Exception 如果Queue 中没有元素。那么,一般情况下应该使用哪一种,使用一种比另一种有什么优势呢?
【问题讨论】:
-
好吧,抛出异常是很昂贵的。这将是选择另一种方法的一个原因。一般来说,虽然我会说“取决于您的要求。”
-
谢谢!任何示例“要求”?
offer() 返回boolean 而add() 抛出Exception 如果Queue 中没有元素。那么,一般情况下应该使用哪一种,使用一种比另一种有什么优势呢?
【问题讨论】:
我想区别在于合同,当元素不能添加到集合中时,add方法会抛出异常而offer不会。
发件人:http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html#add%28E%29
如果集合因任何原因拒绝添加特定元素 除了它已经包含该元素之外,它还必须抛出一个 异常(而不是返回 false)。这保留了不变量 在此之后集合始终包含指定元素 调用返回。来自:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Queue.html#offer%28E%29
如果可能,将指定元素插入此队列。使用时 可能施加插入限制的队列(例如容量 边界),方法报价通常比方法更可取 Collection.add(E),只能通过 抛出异常。
来源:-What is the difference between the add and offer methods in a Queue in Java?
【讨论】: