在Queue后面添加元素的过程称为Enqueue,从队列前面删除元素的过程称为Dequeue。
Java提供了一个Queue接口,它是Java集合框架的一部分。下图描述了集合层次结构中Queue接口的位置 -
Java中的Queue只是一个接口。我们需要在我们的程序中使用Queue接口的具体实现。
如上图所示,LinkedList类实现了Queue接口,因此可以用作Queue。
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
// 使用LinkedList创建并初始化一个队列
Queue<String> waitingQueue = new LinkedList<>();
//给队列添加元素(Enqueue 操作)
waitingQueue.add("Rajeev");
waitingQueue.add("Chris");
waitingQueue.add("John");
waitingQueue.add("Mark");
waitingQueue.add("Steven");
System.out.println("WaitingQueue : " + waitingQueue);
// 从队列中删除元素( Dequeue操作)
// 使用remove()方法删除元素时候,如果队列是空的,会抛出NoSuchElementException异常
String name = waitingQueue.remove();
System.out.println("Removed from WaitingQueue : " + name + " | New WaitingQueue : " + waitingQueue);
// 使用poll()方法删除队列中的元素
//poll()方法和remove()相似,唯一的区别是当队列为空时候poll()返回null
name = waitingQueue.poll();
System.out.println("Removed from WaitingQueue : " + name + " | New WaitingQueue : " + waitingQueue);
}
}
输出:
WaitingQueue : [Rajeev, Chris, John, Mark, Steven]
Removed from WaitingQueue : Rajeev | New WaitingQueue : [Chris, John, Mark, Steven]
Removed from WaitingQueue : Chris | New WaitingQueue : [John, Mark, Steven]
import java.util.LinkedList;
import java.util.Queue;
public class QueueSizeSearchFrontExample {
public static void main(String[] args) {
Queue<String> waitingQueue = new LinkedList<>();
waitingQueue.add("Jennifer");
waitingQueue.add("Angelina");
waitingQueue.add("Johnny");
waitingQueue.add("Sachin");
System.out.println("WaitingQueue : " + waitingQueue);
//检查Queue 是否为空
System.out.println("is waitingQueue empty? : " + waitingQueue.isEmpty());
//获取Queue的大小
System.out.println("Size of waitingQueue : " + waitingQueue.size());
// 查找Queue中是否包含某个元素
String name = "Johnny";
if(waitingQueue.contains(name)) {
System.out.println("WaitingQueue contains " + name);
} else {
System.out.println("Waiting Queue doesn't contain " + name);
}
//获得一个第一的元素,但是不删除该元素 使用element()方法
// 当队列是空的时候element() 方法将会抛出 NoSuchElementException 异常
String firstPersonInTheWaitingQueue = waitingQueue.element();
System.out.println("First Person in the Waiting Queue (element()) : " + firstPersonInTheWaitingQueue);
//peek() 方法和 element() 相似,唯一区别是当队列为空时候peek()方法返回值为null
firstPersonInTheWaitingQueue = waitingQueue.peek();
System.out.println("First Person in the Waiting Queue : " + firstPersonInTheWaitingQueue);
}
}
输出:
WaitingQueue : [Jennifer, Angelina, Johnny, Sachin]
is waitingQueue empty? : false
Size of waitingQueue : 4
WaitingQueue contains Johnny
First Person in the Waiting Queue (element()) : Jennifer
First Person in the Waiting Queue : Jennifer
本节中的示例显示了迭代队列的各种方法:
队列中的迭代顺序与插入顺序相同。
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
public class IterateOverQueueExample {
public static void main(String[] args) {
Queue<String> waitingQueue = new LinkedList<>();
waitingQueue.add("John");
waitingQueue.add("Brad");
waitingQueue.add("Angelina");
waitingQueue.add("Julia");
System.out.println("=== Iterating over a Queue using Java 8 forEach() ===");
waitingQueue.forEach(name -> {
System.out.println(name);
});
System.out.println("\n=== Iterating over a Queue using iterator() ===");
Iterator<String> waitingQueueIterator = waitingQueue.iterator();
while (waitingQueueIterator.hasNext()) {
String name = waitingQueueIterator.next();
System.out.println(name);
}
System.out.println("\n=== Iterating over a Queue using iterator() and Java 8 forEachRemaining() ===");
waitingQueueIterator = waitingQueue.iterator();
waitingQueueIterator.forEachRemaining(name -> {
System.out.println(name);
});
System.out.println("\n=== Iterating over a Queue using simple for-each loop ===");
for(String name: waitingQueue) {
System.out.println(name);
}
}
}
输出:
=== Iterating over a Queue using Java 8 forEach() ===
John
Brad
Angelina
Julia
=== Iterating over a Queue using iterator() ===
John
Brad
Angelina
Julia
=== Iterating over a Queue using iterator() and Java 8 forEachRemaining() ===
John
Brad
Angelina
Julia
=== Iterating over a Queue using simple for-each loop ===
John
Brad
Angelina
Julia
这就是所有!在本文中,您了解了什么是Queue数据结构,如何在Java中创建Queue,如何向Queue添加新元素,如何从Queue中删除元素以及如何在Queue中搜索元素。
http://blog.xqlee.com/article/456.html