Java 中的 Enqueue 和 Dequeue

在我们进入 Java 中 enqueuedequeue 的概念之前,让我们对 Queue 的整个概念有一个基本的了解。它究竟是什么?现实世界的例子等等。让我们潜入。

队列

就编程而言,队列是一种线性结构,具有单向顺序,该数据类型通过该结构执行。单向顺序是 FIFO(先进先出)。一个真实的例子是你在银行外面看到的人(队列)。谁先到,谁先上菜,谁先出去。所以,当我们在编程中说 enqueuedequeue 时,我们的意思是分别添加和删除一个项目。看看下面的图片。

Java 中的 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]