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]