Java 数据结构与算法系列精讲之队列
作者:我是小白呀 时间:2023-09-26 21:10:31
概述
从今天开始, 小白我将带大家开启 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);
}
}
}
来源:https://iamarookie.blog.csdn.net/article/details/121850989
标签:Java,队列,数据结构
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题
2023-12-24 20:21:25
Java实现的具有GUI的校园导航系统的完整代码
2022-06-28 03:43:56
![](https://img.aspxhome.com/file/2023/2/104012_0s.png)
Android实现志愿者系统详细步骤与代码
2022-01-08 22:41:42
![](https://img.aspxhome.com/file/2023/0/89550_0s.png)
利用C#版OpenCV实现圆心求取实例代码
2022-10-28 12:51:48
![](https://img.aspxhome.com/file/2023/3/94663_0s.jpg)
C#清除WebBrowser中Cookie缓存的方法
2022-01-13 20:01:08
Android中EditText光标在4.0中的bug及解决方法
2023-10-01 19:24:17
Java利用Jackson序列化实现数据脱敏详解
2023-12-22 17:47:38
![](https://img.aspxhome.com/file/2023/2/110812_0s.png)
C# 对PDF文档加密、解密(基于Spire.Cloud.SDK for .NET)
2021-11-23 05:37:26
![](https://img.aspxhome.com/file/2023/4/100174_0s.png)
IDEA导入外部项目报Error:java: 无效的目标发行版: 11的解决方法
2021-08-25 03:02:27
![](https://img.aspxhome.com/file/2023/4/62704_0s.png)
SpringBoot2.x 参数校验问题小结
2023-05-22 02:21:22
![](https://img.aspxhome.com/file/2023/7/61567_0s.png)
C#用RabbitMQ实现消息订阅与发布
2022-09-05 16:23:40
![](https://img.aspxhome.com/file/2023/6/92876_0s.png)
SpringBoot中实现接收文件和对象
2022-02-08 10:16:53
![](https://img.aspxhome.com/file/2023/0/79280_0s.png)
Android下的POS打印机调用的简单实现
2022-03-29 08:57:35
SpringBoot中定位切点的两种常用方法
2023-09-26 08:45:17
Android开发导入项目报错Ignoring InnerClasses attribute for an anonymous inner class的解决办法
2023-05-16 13:02:45
![](https://img.aspxhome.com/file/2023/2/113302_0s.png)
Java的Spring框架中bean的继承与内部bean的注入
2023-06-17 18:50:44
![](https://img.aspxhome.com/file/2023/9/69329_0s.png)
基于Java实现一个简单的单词本Android App的实践
2023-04-17 21:27:39
![](https://img.aspxhome.com/file/2023/1/79851_0s.png)
判断一个整数是否是2的N次幂实现方法
2022-12-25 00:55:10
浅谈让@Value更方便的Spring自定义转换类
2023-10-06 14:01:02
![](https://img.aspxhome.com/file/2023/4/74754_0s.jpg)
Unity Shader实现新手引导遮罩镂空效果
2022-08-18 16:25:12
![](https://img.aspxhome.com/file/2023/8/77228_0s.jpg)