Java 中的 Enqueue 和 Dequeue
在我们进入 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]
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