java.util.Deque接口是java.util.Queue接口的子接口。
它代表的队列包含从队列两端添加和删除元素。
"Deque" 是 "Double Ended Queue"的简称。
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(){ String element = (String) iterator.next(); } // 使用 for-loop for(Object object : dequeA) { String element = (String) object; }