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