Java 中的 Enqueue 和 Dequeue

Haider Ali 2024年2月15日
  1. 佇列
  2. Java 中的佇列
  3. Java 中的入隊和出隊
Java 中的 Enqueue 和 Dequeue

在我們進入 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]
作者: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn

相關文章 - Java Queue