简介:
队列是一种先进先出的数据结构。
如果将队列应用在多线程的“生产者与消费者”模型处理中,那么生产者就没有必要等待消费者消费后再生产,可以直接将数据保存在队列之中,而消费者依然必须要等待生产者生产了才能消费。
队列的实现可以使用LinkedList类:
队列的使用主要依靠Queue接口之中提供的方法来处理:
- 向队列之中追加数据:public boolean offer(E e); 可以直接使用add()方法
- 通过队列获取数据:public E poll(); 弹出后删除数据
代码实现:
import java.util.LinkedList;
import java.util.Queue;
public class MAIN {
public static void main(String[] args) {
Queue<String> qq = new LinkedList<String>();
qq.add("张三");
qq.add("李四");
qq.add("王五");
qq.add("狗蛋");
qq.offer("黑子");
System.out.println(qq);
qq.poll();
System.out.println(qq);
}
}
输出结果:
现在观察抛出个数大于队列个数:
import java.util.LinkedList;
import java.util.Queue;
public class MAIN {
public static void main(String[] args) {
Queue<String> qq = new LinkedList<String>();
qq.add("张三"); // 入队
qq.add("李四"); // 入队
qq.add("王五"); // 入队
qq.add("狗蛋"); // 入队
qq.offer("黑子"); // 入队
System.out.println(qq);
qq.poll(); // 出队
qq.poll(); // 出队
qq.poll(); // 出队
qq.poll(); // 出队
qq.poll(); // 出队
qq.poll(); // 出队
System.out.println(qq);
}
}
输出结果:
会显示空队列,不会出现异常。
除了LinkedList外,还有一个优先级队列概念,可以使用PriorityQueue实现优先级队列:
public class PriorityQueue<E>
extends AbstractQueue<E>
implements java.io.Serializable
优先级队列实现:
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
public class MAIN {
public static void main(String[] args) {
Queue<String> qq = new PriorityQueue<String>();
qq.add("Z"); // 入队
qq.add("X"); // 入队
qq.add("G"); // 入队
qq.add("S"); // 入队
qq.add("T"); // 入队
System.out.println(qq);
System.out.println(qq.poll()); // 抛出
System.out.println(qq);
System.out.println(qq.poll()); // 抛出
System.out.println(qq);
System.out.println(qq.poll()); // 抛出
System.out.println(qq);
System.out.println(qq.poll()); // 抛出
System.out.println(qq);
System.out.println(qq.poll()); // 抛出
}
}
输出结果:
[G, S, X, Z, T]
G
[S, T, X, Z]
S
[T, Z, X]
T
[X, Z]
X
[Z]
Z
发现PriorityQueue队列存在排序操作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)