HOWTO · Java
Java 中的 Enqueue 和 Dequeue
瞭解 Java 中的入隊和出隊以及所有其他相關資訊
在我們進入 Java 中 enqueue 和 dequeue 的概念之前,讓我們對 Queue 的整個概念有一個基本的瞭解。它究竟是什麼?現實世界的例子等等。讓我們潛入。
佇列
就程式設計而言,佇列是一種線性結構,具有單向順序,該資料型別通過該結構執行。單向順序是 FIFO(先進先出)。一個真實的例子是你在銀行外面看到的人(佇列)。誰先到,誰先上菜,誰先出去。所以,當我們在程式設計中說 enqueue 和 dequeue 時,我們的意思是分別新增和刪除一個專案。看看下面的圖片。
如你所見,佇列中的新增(入隊)總是從後面,移除(出隊)總是從前面。既然對佇列有了具體的瞭解,接下來我們來看看佇列在 Java 中的實現。
Java 中的佇列
在 Java 中,佇列被看作是一個由連結串列實現的介面。下面的程式碼示例展示瞭如何在 Java 中建立佇列的物件。
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
}
}
你需要新增連結串列和佇列的類才能在 Java 中實現。(見程式碼頂部)。在實現佇列時,我們為此使用連結串列。現在讓我們瞭解在佇列中新增和刪除專案所涉及的方法。
Java 中的入隊和出隊
如上所述,這些型別的操作的順序是 FIFO。所以,讓我們在我們建立的佇列中新增(enqueue)一些值。由於佇列是一個字串,因此以下值就足夠了。
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
// Adding In Queue using `add()` method
queue.add("Bill Gates"); // enque
queue.add("Mark Mark Zuckerberg"); // enque
queue.add("Elon Musk"); // enquue
queue.add("Jeff Bezos");
queue.offer("Donald Trump"); // alternatice enque
System.out.println("Queue : " + queue); // queue print
}
}
在上面的示例中,我們使用以下兩種方法新增了四個值。
queue.add()
正如你在程式碼中看到的,我們在佇列中新增了四個字串值。關於這個方法你應該知道的另一件事是它丟擲一個未經檢查的異常。例如,如果你的佇列受到限制,add() 方法將在新增另一個元素時返回一個異常,而它沒有空間。這一切都取決於佇列的性質。在這裡瞭解有關 Java 中佇列的更多資訊。
queue.offer()
offer() 方法是 add() 的替代方法。此特定方法不會引發異常。相反,它給出真值和假值。在上面的例子中,我們使用 offer() 新增了佇列中的第五個元素。上述程式的輸出如下。
Queue : [ Bill Gates, Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump ]
現在你已經瞭解瞭如何(入隊)在佇列中新增元素。讓我們看看如何從佇列中刪除一個專案。
queue.remove()
remove() 方法用於從佇列中刪除一個元素。它將在佇列的最前面進行操作。例如,如果我們要從上述佇列中移除一個元素,第一個被移除的元素將是 Bill Gates。看看下面的程式碼。
import java.util.LinkedList; // Class Which implements queue list etc.
import java.util.Queue; //queue is an iterface
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// to implement Queue
// Adding In Queue using `add()` method
queue.add("Bill Gates"); // enque
queue.add("Mark Mark Zuckerberg"); // enque
queue.add("Elon Musk"); // enquue
queue.add("Jeff Bezos");
queue.offer("Donald Trump"); // alternatice enque
System.out.println("Queue : " + queue); // queue print
String name = queue.remove(); // Dequeue
System.out.println("Removed from queue : " + name);
System.out.println(queue);
name = queue.poll(); // altrenative deque method
System.out.println("Removed from queue : " + name);
System.out.println(queue);
}
}
正如你在上面的程式碼示例中看到的,我們使用了 remove() 方法來從佇列中刪除一個專案。如果你嘗試從空佇列中刪除元素,它將引發未經檢查的異常。
queue.poll()
remove() 的替代方法是 poll(),它在從空佇列中刪除元素時返回 NULL 值。看一下上面程式碼的輸出。
Queue : [Bill Gates, Mark Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump]
Removed from queue : Bill Gates
[Mark Mark Zuckerberg, Elon Musk, Jeff Bezos, Donald Trump]
Removed from queue : Mark Mark Zuckerberg
[Elon Musk, Jeff Bezos, Donald Trump]