Java 简明教程
Java ArrayDeque Class
Introduction
Java ArrayDeque 类提供可调整的大小的数组并实现了 Deque 接口。以下是关于数组 Deques 的重要要点 −
-
Array deque 没有容量限制,因此它们会在需要时增长以支持使用。
-
在没有外部 synchronization 的情况下,它们不是线程安全的。
-
它们不支持 multiple threads 的并发访问。
-
Array deque 中禁止使用 Null 元素。
-
它们比 Stack 和 LinkedList 更快。
此类及其迭代器实现了 Collection 和 Iterator 接口的所有可选方法。
ArrayDeque Class Declaration
以下是 java.util.ArrayDeque 类的声明:
public class ArrayDeque<E>
extends AbstractCollection<E>
implements Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, Queue<E>
此处 <E> 表示 Element,它可以是任意类。例如,如果你正在构建一个整数 Array deque,则应将其初始化为:
Deque<Integer> objDeque = new ArrayDeque<>();
ArrayDeque Class Constructors
Sr.No. |
Constructor & Description |
1 |
ArrayDeque() 此构造函数用于创建一个空的数组双端队列,其初始容量足以容纳 16 个元素。 |
2 |
ArrayDeque(Collection<? extends E> c) 此构造函数用于创建一个包含指定集合元素的双端队列。 |
3 |
ArrayDeque(int numElements) 此构造函数用于创建空的数组双端队列,其初始容量足以容纳指定数量的元素。 |
ArrayDeque Class Methods
Sr.No. |
Method & Description |
1 |
boolean add(E e) 此方法将指定的元素插入此双端队列的末尾。 |
2 |
boolean addAll(Collection<? extends E> c) 此方法将指定集合中的所有元素添加到此双端队列的末尾,就像在每个元素上调用 addLast(E),按照集合的迭代器返回它们的顺序一样。 |
3 |
void addFirst(E e) 此方法在该双端队列的开头插入指定元素。 |
4 |
void addLast(E e) 此方法在该双端队列的末尾插入指定元素。 |
5 |
void clear() 此方法从该双端队列中删除所有元素。 |
6 |
ArrayDeque<E> clone() 此方法返回该双端队列的副本。 |
7 |
boolean contains(Object o) 如果此双端队列包含指定元素,此方法返回 true。 |
8 |
E element() 此方法检索(但不会删除)由此双端队列表示的队列的头部。 |
9 |
void forEach(Consumer<? super E> action) 此方法在 Iterable 的每个元素上执行给定的操作,直到处理完所有元素或操作引发异常。 |
10 |
E getFirst() 此方法检索(但不会删除)此双端队列的第一个元素。 |
11 |
E getLast() 此方法检索(但不会删除)此双端队列的最后一个元素。 |
12 |
boolean isEmpty() 如果此双端队列不包含任何元素,则此方法返回 true。 |
13 |
Iterator<E> iterator() 此方法返回此双端队列中元素的迭代器。 |
14 |
boolean offer(E e) 此方法将指定的元素插入此双端队列的末尾。 |
15 |
boolean offerFirst(E e) 此方法在该双端队列的开头插入指定元素。 |
16 |
boolean offerLast(E e) 该方法在队列的末尾插入指定元素。 |
17 |
E peek() 该方法检索但不移除由该队列表示的队列的头部,或者如果该队列为空, 则返回 null。 |
18 |
E poll() 该方法检索并移除由该队列表示的队列的头部,或者如果该队列为空, 则返回 null。 |
19 |
E pollFirst() 该方法检索并移除该队列的第一个元素,或者如果该队列为空, 则返回 null。 |
20 |
E pollLast() 该方法检索并移除该队列的最后一个元素,或者如果该队列为空, 则返回 null。 |
21 |
E pop() 该方法从由该队列表示的堆栈中弹出元素。 |
22 |
void push(E e) 该方法将元素压入由该队列表示的堆栈。 |
23 |
E remove() 该方法检索并移除由该队列表示的队列的头部。 |
24 |
boolean removeAll(Collection<?> c) 该方法移除该集合中的所有元素,包括由指定集合中包含的元素。 |
25 |
E removeFirst() 该方法检索并移除该队列的第一个元素。 |
26 |
boolean removeFirstOccurrence(Object o) 该方法移除在该队列中第一次出现的指定元素。 |
27 |
boolean removeIf(Predicate<? super E> filter) 该方法移除满足指定谓词的集合中的所有元素。 |
28 |
E removeLast() 该方法检索并移除该队列的最后一个元素。 |
29 |
boolean removeLastOccurrence(Object o) 该方法移除在该队列中最后一次出现的指定元素。 |
30 |
boolean retainAll(Collection<?> c) 该方法仅保留在指定集合中包含的集合中的元素(可选操作)。 |
31 |
int size() 该方法返回该队列中元素的数量。 |
32 |
Spliterator<E> spliterator() 该方法创建对该队列中元素的延迟绑定和快速失败的 Spliterator。 |
33 |
object[] toArray() 该方法返回包含该队列中的所有元素的数组,顺序适当。 |
Adding and Removing Elements from an ArrayDeque Example
此 Java 示例演示如何使用 ArrayDeque 类。
// Importing classes
import java.util.ArrayDeque;
import java.util.Deque;
// Public Main Class
public class Main {
public static void main(String[] args) {
// The main() function
Deque < Integer > objDeque = new ArrayDeque < > ();
// Adding elements at first and last
objDeque.addFirst(15);
objDeque.addLast(28);
// Removing the elements
int ele1 = objDeque.removeFirst();
int ele2 = objDeque.removeLast();
// Printing removed elements
System.out.println("First removed element is : " + ele1);
System.out.println("Last removed element is : " + ele2);
}
}