Java 数据结构与算法系列精讲之队列
更新时间:2022年02月18日 10:29:09 作者:我是小白呀
这篇文章主要介绍了Java队列数据结构的实现,队列是一种特殊的线性表,只允许在表的队头进行删除操作,在表的后端进行插入操作,队列是一个有序表先进先出,想了解更多相关资料的小伙伴可以参考下面文章的详细内容
概述
从今天开始, 小白我将带大家开启 Jave 数据结构 & 算法的新篇章.

队列
队列 (Queue) 遵循先进先出的原则 (First-In-First-Out). 举个例子, 早上我们排队买早餐的时候, 先排的人先买后排的人后买.

队列只能在队首进行删除操作, 在队尾进行插入操作.
队列实现
enqueue 方法
// 入队
public void enqueue(E element) {
array.add(array.size(), element);
}
dequeue 方法
// 出队
public E dequeue() {
E element = array.get(0);
array.remove(0);
return element;
}
main
public static void main(String[] args) {
// 创建队列
Queue<Integer> queue = new Queue<>();
// 存入5个元素
for (int i = 0; i < 5; i++) {
queue.enqueue(i);
System.out.println(queue);
}
// 取出5个元素
for (int i = 0; i < 5; i++) {
queue.dequeue();
System.out.println(queue);
}
}
输出结果:
Queue{array=[0]}Queue{array=[0, 1]}Queue{array=[0, 1, 2]}Queue{array=[0, 1, 2, 3]}Queue{array=[0, 1, 2, 3, 4]}Queue{array=[1, 2, 3, 4]}Queue{array=[2, 3, 4]}Queue{array=[3, 4]}Queue{array=[4]}Queue{array=[]}
完整代码
import java.util.ArrayList;
public class Queue<E> {
private ArrayList<E> array;
// 无参构造
public Queue() {
array = new ArrayList<>(10);
}
// 有参构造
public Queue(int capacity) {
array = new ArrayList<>(capacity);
}
// 入队
public void enqueue(E element) {
array.add(array.size(), element);
}
// 出队
public E dequeue() {
E element = array.get(0);
array.remove(0);
return element;
}
// 队列是否为空
public boolean isEmpty() {
return array.isEmpty();
}
// 队列长度
public int getSize() {
return array.size();
}
// toString
@Override
public String toString() {
return "Queue{" +
"array=" + array +
'}';
}
public static void main(String[] args) {
// 创建队列
Queue<Integer> queue = new Queue<>();
// 存入5个元素
for (int i = 0; i < 5; i++) {
queue.enqueue(i);
System.out.println(queue);
}
// 取出5个元素
for (int i = 0; i < 5; i++) {
queue.dequeue();
System.out.println(queue);
}
}
}
到此这篇关于Java 数据结构与算法系列精讲之队列的文章就介绍到这了,更多相关Java 队列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringHateoas超媒体API之资源表示与链接关系详解
本文将深入探讨Spring HATEOAS的核心概念、资源表示方式以及如何构建丰富的超媒体API,帮助开发者创建更具自描述性和可发现性的Web服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2025-04-04
SpringMVC中的@RequestMapping注解解析
这篇文章主要介绍了SpringMVC中的@RequestMapping注解解析,SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些 URL 请求,在控制器的类定义及方法定义处都可标注@RequestMapping,需要的朋友可以参考下2023-12-12
如何解决freemarker静态化生成html页面乱码的问题
这篇文章主要介绍了如何解决freemarker静态化生成html页面乱码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-01-01


最新评论