queue java
时间: 2023-10-14 14:00:14 浏览: 101
在Java中,Queue是一个接口,它表示一种先进先出(FIFO)的数据结构。它可以通过具体的实现类来创建队列对象。其中,LinkedList是一种常用的实现类。以下是一个使用Queue接口和LinkedList实现类创建队列的示例代码:
```java
import java.util.Queue;
import java.util.LinkedList;
public class QueueExample {
public static void main(String[] args) {
// 创建一个Queue对象
Queue<String> queue = new LinkedList<>();
// 添加元素到队列
queue.add("Apple");
queue.add("Banana");
queue.add("Orange");
// 获取队列头部元素
String head = queue.peek();
System.out.println("头部元素:" + head);
// 遍历队列并输出元素
System.out.println("队列元素:");
for (String element : queue) {
System.out.println(element);
}
// 移除队列头部元素
String removedElement = queue.remove();
System.out.println("移除的元素:" + removedElement);
// 队列大小
int size = queue.size();
System.out.println("队列大小:" + size);
// 判断队列是否为空
boolean isEmpty = queue.isEmpty();
System.out.println("队列是否为空:" + isEmpty);
}
}
```
另外,Java中还有一种优先队列(PriorityQueue),它是基于堆(Heap)结构实现的。以下是一个使用PriorityQueue创建优先队列的示例代码:
```java
import java.util.PriorityQueue;
import java.util.Comparator;
public class PriorityQueueExample {
public static void main(String[] args) {
// 创建一个PriorityQueue对象,默认采用最小堆实现
PriorityQueue<Integer> queue = new PriorityQueue<>(10, new Comparator<Integer>() {
public int compare(Integer a, Integer b) {
return a - b; // 如果a > b,则交换,所以这是一个递增序列
}
});
// 添加元素到队列
queue.offer(13);
queue.offer(9);
// 遍历队列并输出元素
int len = queue.size();
for (int i = 0; i < len; i++) {
System.out.println(queue.poll());
}
// 创建一个PriorityQueue对象,默认采用最小堆实现
PriorityQueue<Integer> queue2 = new PriorityQueue<>(10);
queue2.offer(11);
queue2.offer(9);
// 遍历队列并输出元素
len = queue2.size();
for (int i = 0; i < len; i++) {
System.out.println(queue2.poll());
}
}
}
```
除了Queue接口,Java还提供了Deque接口,它表示一种双端队列。同样,我们需要选择具体的实现类来创建双端队列对象。以下是一个使用Deque接口和ArrayDeque实现类创建双端队列的示例代码:
```java
import java.util.Deque;
import java.util.ArrayDeque;
public class DequeExample {
public static void main(String[] args) {
// 创建一个Deque对象
Deque<String> deque = new ArrayDeque<>();
// 添加元素到双端队列
deque.addFirst("Apple");
deque.addLast("Banana");
deque.addLast("Orange");
// 获取双端队列头部和尾部元素
String first = deque.getFirst();
String last = deque.getLast();
System.out.println("头部元素:" + first);
System.out.println("尾部元素:" + last);
// 遍历双端队列并输出元素
System.out.println("双端队列元素(从头到尾):");
for (String element : deque) {
System.out.println(element);
}
// 移除双端队列头部和尾部元素
String removedFirst = deque.removeFirst();
String removedLast = deque.removeLast();
System.out.println("移除的头部元素:" + removedFirst);
System.out.println("移除的尾部元素:" + removedLast);
// 双端队列大小
int size = deque.size();
System.out.println("双端队列大小:" + size);
// 判断双端队列是否为空
boolean isEmpty = deque.isEmpty();
System.out.println("双端队列是否为空:" + isEmpty);
}
}
```
希望这些示例代码能够帮助您理解使用Queue、PriorityQueue和Deque的基本用法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Java 数据结构之队列(Queue)详解](https://blog.csdn.net/swadian2008/article/details/126783574)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文