在ArrayDeque中同时使用push(),offer()和add()方法会发生什么?

时间:2017-01-11 12:39:26

标签: java collections arraydeque

ArrayDeque具有堆栈和队列的方法。最常用的堆栈和队列方法如下所示:

Stack方法:push / poll / peek

Queue方法:push / poll / peek

我在下面的代码块中做的事情是,当同时使用提供,推送和添加方法时,我试图理解ArrayDeque的行为。我写的代码及其输出如下。调用ArrayDeque方法之后push()的行为是什么,它假定自己是一个堆栈,然后调用offer()方法,它被称为队列方法。

Deque<Integer> arrayDeque = new ArrayDeque<>(); 

arrayDeque.add(3);
arrayDeque.push(4);
arrayDeque.offer(6);
arrayDeque.addFirst(2);
arrayDeque.addLast(5);
arrayDeque.addFirst(1);
System.out.println("ArrayDeque: " + arrayDeque.toString());

输出结果为:

ArrayDeque: [1, 2, 4, 3, 6, 5]

4 个答案:

答案 0 :(得分:3)

这是它一步一步做的事情

// Add 3 at the tail of this deque
arrayDeque.add(3); -> [3]
// Add 4 at the head of this deque
arrayDeque.push(4); -> [4, 3]
// Add 6 at the tail of this deque
arrayDeque.offer(6); -> [4, 3, 6]
// Add 2 at the head of this deque
arrayDeque.addFirst(2); -> [2, 4, 3, 6]
// Add 5 at the tail of this deque
arrayDeque.addLast(5); -> [2, 4, 3, 6, 5]
// Add 1 at the head of this deque
arrayDeque.addFirst(1); -> [1, 2, 4, 3, 6, 5]

请注意,与DequeQueue不同的Stack的主要目的是能够访问/添加元素 / strong>结束(头部和尾部)。

答案 1 :(得分:0)

1.offer-此方法在此双端队列的末尾插入指定的元素。 2.add-此方法在此双端队列的末尾插入指定的元素。 3.push-此方法将元素推送到此双端队列表示的堆栈上。 4.addFirst - 此方法在此双端队列的前面插入指定的元素。 5.addLast-此方法在此双端队列的末尾插入指定的元素。

答案 2 :(得分:0)

你不明白什么?

  

你可以在调用push()方法之后解释ArrayDeque的行为吗,它假设自己是一个堆栈,然后调用offer()方法,该方法在JavaDoc中被称为队列方法

看看Javadoc:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayDeque.html

push方法在开头插入,offer插入到最后。

答案 3 :(得分:0)

Nicolas Filotto的回答是正确的。 我发现源代码文件中的“尾巴”说明是错误的。它说add = push。但是,在函数实现中,add = addLast,push = addFirst。 enter image description here