Java Deque和ArrayDeque
精华
小牛编辑
195浏览
2023-03-14
1 什么是Java Deque接口
Java Deque接口是一个线性集合,支持两端的元素插入和删除。Deque是“双端队列”的首字母缩写。
2 Java Deque接口的语法
public interface Deque<E> extends Queue<E>
3 Java Deque接口(ArrayDeque类)的方法
方法 | 描述 |
---|---|
boolean add(object) | 此方法在此双端队列的末尾插入指定的元素。 |
void addFirst(E e) | 此方法将指定的元素插入此双端队列的前面。 |
void addLast(E e) | 此方法在此双端队列的末尾插入指定的元素。 |
void clear() | 此方法从此双端队列中删除所有元素。 |
ArrayDeque<E> clone() | 此方法返回此双端队列的副本。 |
boolean contains(Object o) | 如果此双端队列包含指定的元素,则此方法返回true。 |
Iterator<E> descendingIterator() | 此方法以相反的顺序返回此双端队列中的元素的迭代器。 |
E element() | 此方法检索但不删除此双端队列代表的队列的头部。 |
E getFirst() | 此方法检索但不删除此双端队列的第一个元素。 |
E getLast() | 此方法检索但不删除此双端队列的最后一个元素。 |
boolean isEmpty() | 如果此双端队列不包含任何元素,则此方法返回true。 |
Iterator<E> iterator() | 此方法返回此双端队列中的元素的迭代器。 |
boolean offer(E e) | 此方法在此双端队列的末尾插入指定的元素。 |
boolean offerFirst(E e) | 此方法将指定的元素插入此双端队列的前面。 |
boolean offerLast(E e) | 此方法在此双端队列的末尾插入指定的元素。 |
E peek() | 此方法检索但不删除此双端队列表示的队列的头部,如果此双端队列为空,则返回null。 |
E peekFirst() | 此方法检索但不删除此双端队列的第一个元素,如果此双端队列为空,则返回null。 |
E peekLast() | 此方法检索但不删除此双端队列的最后一个元素,如果此双端队列为空,则返回null。 |
E poll() | 此方法检索并删除此双端队列表示的队列的头部,如果此双端队列为空,则返回null。 |
E pollFirst() | 此方法检索并删除此双端队列的第一个元素,如果此双端队列为空,则返回null。 |
E pollLast() | 此方法检索并删除此双端队列的最后一个元素,如果此双端队列为空,则返回null。 |
E pop() | 此方法从此双端队列表示的堆栈中弹出一个元素。 |
void push(E e) | 此方法将元素压入此双端队列表示的堆栈上。 |
E remove() | 此方法检索并删除此双端队列代表的队列的头部。 |
boolean remove(Object o) | 此方法从此双端队列删除指定元素的单个实例。 |
E removeFirst() | 此方法检索并删除此双端队列的第一个元素。 |
boolean removeFirstOccurrence(Object o) | 此方法删除此双端队列中指定元素的首次出现。 |
E removeLast() | 此方法检索并删除此双端队列的最后一个元素。 |
boolean removeLastOccurrence(Object o) | 此方法删除此双端队列中最后一次出现的指定元素。 |
int size() | 此方法返回此双端队列的元素数。 |
Object[] toArray() | 此方法以适当的顺序返回一个数组,其中包含此双端队列中的所有元素。 |
4 什么是ArrayDeque类
ArrayDeque类提供使用Deque双端队列和可调整大小的数组的便利。它继承了AbstractCollection类并实现了Deque接口。
关于ArrayDeque类的核心要点是:
- 与Queue不同,ArrayDeque可以从两侧添加或删除元素。
- ArrayDeque中不允许存放null元素。
- ArrayDeque是非同步的,意味着ArrayDeque是线程不安全的。
- ArrayDeque没有容量限制。
- ArrayDeque比LinkedList和Stack更快。
5 Java ArrayDeque类的层次结构
上图中给出了ArrayDeque类的层次结构。
6 Java ArrayDeque类的语法
public class ArrayDeque<E> extends AbstractCollection<E> implements Deque<E>, Cloneable, Serializable
7 Java ArrayDeque的例子1
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
/**
* Java ArrayDeque的例子
*/
import java.util.*;
public class Demo {
public static void main(String[] args) {
//创建ArrayDeque,并添加元素
Deque<String> deque = new ArrayDeque<String>();
deque.add("Eric");
deque.add("Jack");
deque.add("Rose");
//遍历元素
for (String str : deque) {
System.out.println(str);
}
}
}
输出结果为:
Eric
Jack
Rose
8 Java ArrayDeque的例子2
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
/**
* Java ArrayDeque的例子
*/
import java.util.*;
public class Demo {
public static void main(String[] args) {
Deque<String> deque=new ArrayDeque<String>();
deque.offer("eric");
deque.offer("jack");
deque.add("rose");
deque.offerFirst("macy");
System.out.println("调用offerFirst方法后...");
for(String s:deque){
System.out.println(s);
}
deque.pollLast();
System.out.println("调用pollLast()方法后...");
for(String s:deque){
System.out.println(s);
}
}
}
输出结果为:
调用offerFirst方法后...
macy
eric
jack
rose
调用pollLast()方法后...
macy
eric
jack