在本教程中,我們將學習Java Queue接口及其方法。
Java集合框架的Queue接口提供了隊列數(shù)據(jù)結構的功能。它繼承了Collection接口。
由于Queue是一個接口,因此我們無法提供它的直接實現(xiàn)。
為了使用Queue的功能,我們需要使用實現(xiàn)它的類:
Queue接口還可以被各種子接口繼承:
Deque
BlockingQueue
BlockingDeque
在隊列中,以先進先出的方式存儲和訪問元素。也就是說,從后面添加元素,從前面刪除元素。
在Java中,必須導入java.util.Queue包才能使用Queue。
// 使用 LinkedList 創(chuàng)建 Queue<String> animal1 = new LinkedList<>(); // 使用 ArrayDeque 創(chuàng)建 Queue<String> animal2 = new ArrayDeque<>(); // 使用 PriorityQueue創(chuàng)建 Queue<String> animal 3 = new PriorityQueue<>();
在這里,我們分別創(chuàng)建了類LinkedList,ArrayDeque和PriorityQueue的對象Animal1,Animal2和Animal3。 這些對象可以使用Queue接口的功能。
Queue接口包括Collection接口的所有方法。 這是因為Collection是Queue的超級接口。
Queue接口的一些常用方法是:
add() - 將指定的元素插入隊列。如果任務成功,則add()返回true,否則將引發(fā)異常。
offer() - 將指定的元素插入隊列。如果任務成功,則offer()返回true,否則返回false。
element() - 返回隊列的開頭。如果隊列為空,則引發(fā)異常。
peek() - 返回隊列的開頭。 如果隊列為空,則返回null。
remove() - 返回并刪除隊列的頭部。如果隊列為空,則引發(fā)異常。
poll() - 返回并刪除隊列的開頭。 如果隊列為空,則返回null。
1.實現(xiàn)LinkedList類
import java.util.Queue; import java.util.LinkedList; class Main { public static void main(String[] args) { // 創(chuàng)建 Queue 使用LinkedList 類 Queue<Integer> numbers = new LinkedList<>(); //添加元素到 Queue numbers.offer(1); numbers.offer(2); numbers.offer(3); System.out.println("Queue: " + numbers); // 訪問Queue的元素 int accessedNumber = numbers.peek(); System.out.println("訪問元素: " + accessedNumber); //從隊列中Queue元素 int removedNumber = numbers.poll(); System.out.println("刪除元素: " + removedNumber); System.out.println("更新后的 Queue: " + numbers); } }
輸出結果
Queue: [1, 2, 3] 訪問元素: 1 刪除元素: 1 更新后的 Queue: [2, 3]
要了解更多信息,請訪問Java LinkedList。
2.實現(xiàn)PriorityQueue類
import java.util.Queue; import java.util.PriorityQueue; class Main { public static void main(String[] args) { // 使用PriorityQueue類創(chuàng)建隊列 Queue<Integer> numbers = new PriorityQueue<>(); //添加元素到 Queue numbers.offer(5); numbers.offer(1); numbers.offer(2); System.out.println("Queue: " + numbers); //訪問 Queue 的元素 int accessedNumber = numbers.peek(); System.out.println("訪問元素: " + accessedNumber); //從 Queue 刪除元素 int removedNumber = numbers.poll(); System.out.println("刪除元素: " + removedNumber); System.out.println("更新后的 Queue: " + numbers); } }
輸出結果
Queue: [1, 5, 2] 訪問元素: 1 刪除元素: 1 更新后的 Queue: [2, 5]
要了解更多信息,請訪問Java PriorityQueue。
在接下來的教程中,我們將詳細了解該Queue接口的不同子接口及其實現(xiàn)。