HOWTO · Java

Java 中的 Enqueue 和 Dequeue

瞭解 Java 中的入隊和出隊以及所有其他相關資訊

在我們進入 Java 中 enqueuedequeue 的概念之前,讓我們對 Queue 的整個概念有一個基本的瞭解。它究竟是什麼?現實世界的例子等等。讓我們潛入。

佇列

就程式設計而言,佇列是一種線性結構,具有單向順序,該資料型別通過該結構執行。單向順序是 FIFO(先進先出)。一個真實的例子是你在銀行外面看到的人(佇列)。誰先到,誰先上菜,誰先出去。所以,當我們在程式設計中說 enqueuedequeue 時,我們的意思是分別新增和刪除一個專案。看看下面的圖片。

入隊和出隊 java

如你所見,佇列中的新增(入隊)總是從後面,移除(出隊)總是從前面。既然對佇列有了具體的瞭解,接下來我們來看看佇列在 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]