我想知道this教程在引用以下内容时的含义。特别是我以粗体突出显示的部分。
插入
addfirst
和offerFirst
方法在开头插入元素Deque
个实例。方法addLast
和offerLast
插入Deque
实例末尾的元素。 当容量的时候Deque
实例受到限制,首选方法为offerFirst
和offerLast
因为addFirst
可能无法抛出异常 满。
答案 0 :(得分:1)
我认为这两种方法都是合法的(尽管offerXXX方法更有可能用于有界出列)。
如果您的代码假定队列中有可用空间,并且此假设对代码的正确性至关重要,请使用addFirst / addLast。抛出运行时异常(IllegalStateException)非常适合此错误方案。
另一方面,如果完整队列是正常情况,请不要使用异常处理它。使用offerFirst / offerLast,并检查返回的值。
答案 1 :(得分:0)
如果deque达到容量存在风险,则OfferFirst是优先方法。如果它已达到容量,addFirst将抛出异常,其中provideFirst返回一个布尔值(true / false)以指示添加是否成功。 offerFirst在此双端队列的前面插入指定的元素,除非它违反容量限制。使用容量限制的双端队列时,此方法通常优于addFirst(E)方法,该方法只能通过抛出异常来插入元素。
答案 2 :(得分:0)
为什么在使用受限制的版本时,您不希望在添加元素时抛出异常失败。这是因为你会期望一些失败,这就是你提出添加而不是坚持添加的原因。
答案 3 :(得分:0)
这意味着offerXXX
方法返回boolean
,而addXXX
方法则不返回。{/ p>
因此,建议您使用offerXXX
并检查布尔值是否成功,而不是期望从任一方法抛出异常。
措辞非常糟糕。 Javadoc也是如此。
答案 4 :(得分:-1)
根据Docs:
<强> offerFirst:强>
Inserts the specified element at the front of this deque unless it would violate capacity restrictions. When using a capacity-restricted deque, this method is generally preferable to the addFirst(E) method, which can fail to insert an element only by throwing an exception.
这意味着如果你使用带有容量限制的deque的addFirst,它可能会抛出异常,但是使用offerFirst不会抛出任何异常。
<强> offerLast 强>
Inserts the specified element at the end of this deque unless it would violate capacity restrictions. When using a capacity-restricted deque, this method is generally preferable to the addLast(E) method, which can fail to insert an element only by throwing an exception.
同样,如果你使用addLast和容量受限的deque,它可能会抛出异常,但使用offerLast不会抛出任何异常。