Java 简明教程

Java ArrayDeque Class

Introduction

Java ArrayDeque 类提供可调整的大小的数组并实现了 Deque 接口。以下是关于数组 Deques 的重要要点 −

  1. Array deque 没有容量限制,因此它们会在需要时增长以支持使用。

  2. 在没有外部 synchronization 的情况下,它们不是线程安全的。

  3. 它们不支持 multiple threads 的并发访问。

  4. Array deque 中禁止使用 Null 元素。

  5. 它们比 Stack 和 LinkedList 更快。

此类及其迭代器实现了 CollectionIterator 接口的所有可选方法。

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&lt;? extends E&gt; 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);
  }
}

Output

这会产生以下结果 −

First removed element is : 15
Last removed element is : 28