Deque
java.util.Deque接口是java.util.Queue接口的子接口。
它代表的队列包含从队列两端添加和删除元素。
"Deque" 是 "Double Ended Queue"的简称。
Deque的实现类
java.util.ArrayDeque
java.util.LinkedList
LinkedList是一个标准的deque/queue实现。
ArrayDeque内部使用数组保存元素,如果元素数量超过了内部数组的大小,内部将产生一个新的数组,
然后将数据转移过去,用来满足需求,换句话说,ArrayQeque自身有扩容功能。
添加,访问和删除元素
向Deque中添加元素除了add()和offer()方法以外,
还可以调用addLast()插入到末尾,addFirst()插入到头部。
offerFirst()插入到头部,offerLast()插入到末尾。
push()插入到头部,
Deque deque = new LinkedList();
deque.add("element1"); // 在末尾添加元素
deque.addFirst("element2"); // 在头部添加元素
deque.addLast("element3"); // 在末尾添加元素
deque.offerFirst("element4"); // 在头部添加元素
deque.offerLast("element5"); // 在末尾添加元素
出队列的方法除了queue中提到的
peek(); element(); poll(); remove();
Deque还新增了
getFirst()方法,返回头部元素, 不删除该元素
getLast()方法,返回末尾元素,不删除该元素
peekFirst()方法,返回头部元素,不删除该元素
peekLast()方法,返回末尾元素,不删除该元素
pollFirst()方法,返回头部元素并且删除该元素
pollLast()方法,返回尾部元素并且删除该元素
removeFirst()方法,返回头部元素并且删除该元素
removeLast()方法,返回尾部元素并且删除该元素
removeFirstOccurrence(Object)方法,由头至尾删除第一次出现在列表中的元素
removeLastOccurrence(Object)方法,由尾至头删除第一次出现在列表中的元素
pop()从末尾取出并且删除元素
对元素进行遍历
Deque deque = new LinkedList();
deque.add("element0");
deque.add("element1");
deque.add("element2");
// 使用 Iterator
Iterator iterator = dequeA.iterator();
while(iterator.hasNext(){undefined
String element = (String) iterator.next();
}
// 使用 for-loop
for(Object object : dequeA) {undefined
String element = (String) object;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异