Java中的数据块插入
我想知道当提到下面的解释时,教程的意思是什么。特别是我用粗体突出显示的部分 插入Java中的数据块插入,java,deque,insertion,Java,Deque,Insertion,我想知道当提到下面的解释时,教程的意思是什么。特别是我用粗体突出显示的部分 插入 addfirst和offerFirst方法在开头插入元素 属于Deque实例。方法addLast和offerLastinsert Deque实例末尾的元素当 Deque实例受到限制,首选方法是offerFirst和 offerLast,因为addFirst可能无法引发异常,如果它是 已满。 为什么优先选择offerFirst 如果异常已满,为什么addFirst无法抛出异常?如果它保证在这些情况下抛出异常,难道不是
addfirst
和offerFirst
方法在开头插入元素
属于Deque
实例。方法addLast
和offerLast
insert
Deque
实例末尾的元素当
Deque
实例受到限制,首选方法是offerFirst
和
offerLast
,因为addFirst
可能无法引发异常,如果它是
已满。
将指定元素插入此数据块的前面,除非它违反容量限制。当使用容量受限的deque时,此方法通常优于addFirst(E)方法,后者只能通过抛出异常来插入元素。
这意味着如果将addFirst与容量受限的deque一起使用,它可能会引发异常,但使用offerFirst不会引发任何异常
最新报价
在此数据末尾插入指定的元素,除非它违反容量限制。当使用容量受限的deque时,此方法通常比addLast(E)方法更可取,后者只能通过抛出异常才能插入元素。
类似地,如果将addLast与容量受限的deque一起使用,它可能会引发异常,但使用offerLast不会引发任何异常。我认为这两种方法都是合法的(尽管offerXXX方法更有可能在有界的dequeue中使用) 如果您的代码假设队列中有可用空间,并且此假设对代码的正确性至关重要,请使用addFirst/addLast。正在抛出的运行时异常(IllegalStateException)非常适合此错误场景
另一方面,如果一个完整的队列是一个正常的场景,那么不要使用异常来处理它。使用offerFirst/offerLast并检查返回值。如果存在设备达到容量的风险,offerFirst是首选方法。如果已达到容量,addFirst将抛出异常,其中as offerFirst返回一个布尔值(真/假)以指示添加是否成功。offerFirst在该数据块的前面插入指定的元素,除非它违反容量限制。当使用容量受限的deque时,此方法通常比addFirst(E)方法更可取,因为addFirst(E)方法只能通过引发异常才能插入元素。为什么在使用受限版本时,在添加元素失败时不希望引发异常。这是因为您可能会遇到一些失败,这就是为什么您提供添加而不是坚持添加。这意味着
offerXXX
方法返回boolean
,而addXXX
方法不返回
因此,建议您使用offerXXX
并检查布尔值是否成功,而不要期望任何一种方法都会引发异常
措辞非常糟糕。Javadoc也是如此。我认为它并没有回答这个问题。他的问题是为什么?这意味着如果您将addFirst与容量受限的deque一起使用,它可能会引发异常,但使用offerFirst不会引发任何异常。(如上所述)@Apurv:这不是一个完整的解释。避免例外并不总是明智的。参见我的回答(),这不是链接教程所说的。最后一个“offerFirst”应该是“addFirst”。这是否得到纠正?