雙端隊(duì)列或deque擴(kuò)展隊(duì)列以允許元件從兩端插入和移除。
Deque
類的實(shí)例表示雙端隊(duì)列。 Deque
接口擴(kuò)展了 Queue
接口。
它聲明了方便所有操作的其他方法對于頭部以及尾部的隊(duì)列。它可以用作FIFO隊(duì)列或LIFO隊(duì)列。
ArrayDeque和LinkedList類是Deque接口的兩個(gè)實(shí)現(xiàn)類。
ArrayDeque
類由數(shù)組支持,而 LinkedList
類由鏈表支持。
如果您使用Deque作為堆棧,則應(yīng)該使用 ArrayDeque
作為 Deque
實(shí)現(xiàn)。
如果使用 Deque
作為FIFO隊(duì)列, LinkedList
以下代碼顯示如何使用 Deque
作為FIFO隊(duì)列。
import java.util.Deque; import java.util.LinkedList; public class Main { public static void main(String[] args) { Deque<String> deque = new LinkedList<>(); deque.addLast("Oracle"); deque.offerLast("Java"); deque.offerLast("CSS"); deque.offerLast("XML"); System.out.println("Deque: " + deque); // remove elements from the Deque until it is empty while (deque.peekFirst() != null) { System.out.println("Head Element: " + deque.peekFirst()); deque.removeFirst(); System.out.println("Removed one element from Deque"); System.out.println("Deque: " + deque); } // the Deque is empty. Try to call its peekFirst(), // getFirst(), pollFirst() and removeFirst() methods System.out.println("deque.isEmpty(): " + deque.isEmpty()); System.out.println("deque.peekFirst(): " + deque.peekFirst()); System.out.println("deque.pollFirst(): " + deque.pollFirst()); String str = deque.getFirst(); System.out.println("deque.getFirst(): " + str); str = deque.removeFirst(); System.out.println("deque.removeFirst(): " + str); } }
上面的代碼生成以下結(jié)果。
以下代碼顯示如何使用Deque作為堆棧(或LIFO隊(duì)列)。
import java.util.ArrayDeque; import java.util.Deque; public class Main { public static void main(String[] args) { // Create a Deque and use it as stack Deque<String> deque = new ArrayDeque<>(); deque.push("Oracle"); deque.push("HTML"); deque.push("CSS"); deque.push("XML"); System.out.println("Stack: " + deque); // remove all elements from the Deque while (deque.peek() != null) { System.out.println("Element at top: " + deque.peek()); System.out.println("Popped: " + deque.pop()); System.out.println("Stack: " + deque); } System.out.println("Stack is empty: " + deque.isEmpty()); } }
上面的代碼生成以下結(jié)果。
更多建議: