2

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

Stack方法:push//pollpeek

Queue方法:push//pollpeek

我在下面的代码块中所做的事情是,我试图了解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

4 回答 4

8

这是它一步一步做的事情

// 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]

请记住,Deque与 aQueue或 a不同的主要目的是能够两端(头部和尾部)Stack访问/添加元素。

于 2017-01-11T12:46:42.860 回答
0

Nicolas Filotto 的回答是正确的。我发现源代码文件中的“尾巴”解释是错误的。它说添加=推送。但是,在函数实现中,add = addLast,push = addFirst。 在此处输入图像描述

于 2019-12-19T05:02:57.577 回答
0

你不明白什么?

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

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

push方法在开头offer插入和在结尾插入。

于 2017-01-11T12:48:03.060 回答
0

1.offer-此方法在此双端队列末尾插入指定元素。2.add-这个方法在这个双端队列的末尾插入指定的元素。3.push——这个方法将一个元素压入这个双端队列所代表的栈中。4.addFirst——这个方法在这个双端队列的前面插入指定的元素。5.addLast-这个方法在这个双端队列的末尾插入指定的元素。

于 2017-01-11T12:46:19.497 回答