当前位置: 首页 > 知识库问答 >
问题:

ArrayDeque中addfirst和offerFirst方法的区别

党建义
2023-03-14

我们已经试用了一个示例程序,以了解Java 6的ArrayDequeaddFirstofferFirst方法之间的区别。但他们似乎是一样的,有什么建议吗?

public void interfaceDequetest()
{
        try{
        ArrayDeque<String> ad = new ArrayDeque<String>();
        ad.addFirst("a1");
        ad.offerFirst("o1");
        ad.addFirst("a2");
        ad.offerFirst("02");
        ad.addFirst("a3");

        System.out.println("in finally block");

        for (String number : ad){
            System.out.println("Number = " + number);
        }
}

共有2个答案

齐文林
2023-03-14

offerFirst的源代码:

 public boolean offerFirst(E e) {
        addFirst(e);
        return true;
    }

先加

 public void addFirst(E e) {
        if (e == null)
            throw new NullPointerException();
        elements[head = (head - 1) & (elements.length - 1)] = e;
        if (head == tail)
            doubleCapacity();
    }

OfferFirst返回true,这是唯一的区别...

堵毅然
2023-03-14

不同的是,由于队列容量限制,添加失败时会发生什么:

  • 。addFirst()抛出一个(未选中的)异常,
  • 。offerFirst()返回false

这记录在Deque中,它实现了ArrayDeque

需要注意的是,ArrayDeque没有容量限制,因此基本上。addFirst()永远不会抛出异常(并且。offerFirst()将始终返回true);例如,这与使用初始容量构建的LinkedBlockingQueue不同。

 类似资料:
  • 问题内容: 已经尝试了一个示例程序来理解Java 6 和方法之间的区别。但是它们似乎是相同的,有什么建议吗? 问题答案: 区别在于,由于队列容量限制,添加失败时会发生什么: 引发(未经检查的)异常, 返回。 在实现的中记录了这一点。 值得注意的是,它没有容量限制,因此基本上不会抛出异常(并且总是会返回);例如,这与具有初始容量的建筑物不同。

  • 主要内容:1 什么是Java Deque接口,2 Java Deque接口的语法,3 Java Deque接口(ArrayDeque类)的方法,4 什么是ArrayDeque类,5 Java ArrayDeque类的层次结构,6 Java ArrayDeque类的语法,7 Java ArrayDeque的例子1,8 Java ArrayDeque的例子21 什么是Java Deque接口 Java Deque接口是一个线性集合,支持两端的元素插入和删除。Deque是“双端队列”的首字母缩写。 2

  • 我想有后进先出的效果,我想它是同步的。有人知道我应该使用这两个实现中的哪一个吗?谷歌搜索了一段时间,还是没有好答案。 底线:区别是什么,为什么使用一个而不是另一个,为什么说它偏向于ArrayDeQueue?

  • 主要内容:1 ArrayDeque的概述,2 ArrayDeque的API方法,3 ArrayDeque的源码解析,3.1 主要类属性,3.2 构造器与初始容量,3.3 添加的方法,3.4 移除的方法,3.5 获取的方法,3.6 其他方法,4 ArrayDeque和LinkedList的区别,5 性能对比基于JDK1.8对Java中的ArrayDeque集合的源码进行了深度解析,包括各种方法的底层实现,在最后给出了ArrayDeque和LinkedList的对比案例以及使用建议。 1 Array

  • 我正在使用customLinkedLists的LinkedList,而我的AddFirst方法的实现遇到了一些问题。 方法如下, 问题是,每次调用它时,它都会正确地增加大小,但当我试图打印出值时,它会抛出一个空指针异常。我知道我设置头/尾指针的方式有问题,但我不知道它到底是什么。 编辑:基本上我有一个OuterList和一个自定义的LinkedList类。 在outer list类中,我有一个对象

  • 这是家庭作业。 我正在用链表做一个堆栈。我选择使用Java的Java中的链表。util。LinkedList包。当我在主类中调用addFirst()方法时,程序将无法完成。它的行为就像一个无限循环,但据我所知,没有涉及循环。代码如下: 这是调用push()方法的Main类。 测试LinkedListStack非常困难。java,因为我无法将任何内容推送到堆栈上。我不知道怎么了。