java中队列如何使用
队列的基本概念
队列是一种先进先出(FIFO)的数据结构,元素从队尾插入,从队头移除。Java中队列的实现主要通过Queue接口及其实现类完成。
常用实现类
-
LinkedList
实现了Queue接口,支持队列的基本操作。适合需要频繁插入和删除的场景。Queue<String> queue = new LinkedList<>(); -
ArrayDeque
基于数组的双端队列,性能优于LinkedList,适合高频率操作。Queue<Integer> queue = new ArrayDeque<>(); -
PriorityQueue
优先级队列,元素按自然顺序或自定义比较器排序。Queue<Integer> queue = new PriorityQueue<>();
核心操作方法
添加元素
add(E e):插入元素,队列满时抛出异常。offer(E e):插入元素,队列满时返回false。
移除元素
remove():移除队头元素,队列空时抛出异常。poll():移除队头元素,队列空时返回null。
查看队头元素
element():获取队头元素但不移除,队列空时抛出异常。peek():获取队头元素但不移除,队列空时返回null。
示例代码
Queue<String> queue = new LinkedList<>();
queue.offer("A"); // 添加元素
queue.offer("B");
System.out.println(queue.peek()); // 输出: A
queue.poll(); // 移除A
System.out.println(queue.peek()); // 输出: B
阻塞队列(高级场景)
BlockingQueue接口(如ArrayBlockingQueue)支持线程安全的阻塞操作:

put(E e):队列满时阻塞等待。take():队列空时阻塞等待。
BlockingQueue<String> blockingQueue = new ArrayBlockingQueue<>(10);
blockingQueue.put("Task"); // 阻塞添加
String task = blockingQueue.take(); // 阻塞获取
注意事项
- 优先使用
offer、poll、peek避免异常。 - 多线程环境选择
ConcurrentLinkedQueue或BlockingQueue实现。 PriorityQueue的排序依赖元素的Comparable实现或自定义Comparator。






