Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的数据块插入_Java_Deque_Insertion - Fatal编程技术网

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
可能无法引发异常,如果它是 已满。

  • 为什么优先选择offerFirst
  • 如果异常已满,为什么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”。这是否得到纠正?