如何在 Java 中实现保存最后 N 个元素的大小受限队列?
简介
队列是 Java 中的接口。它用于在一端插入元素并从另一端移除元素。它使用 FIFO 原则进行处理。队列扩展了 Collection 框架,并在 Java.util 接口中定义。
在本教程中,我们将了解 Java 中大小受限队列的实现。
什么是 Java 中的大小受限队列?
大小受限队列是固定大小为 N 的队列。它不能容纳超过其大小的元素。如果您尝试推送更多数据,它将从其前端删除元素。队列的大小固定为 N。
大小受限队列使用 Linked List 类实现,具有 Java 中简单队列的所有基本方法。
在 Java 中实现保存最后 N 个元素的大小受限队列
我们正在实现一种方法,通过覆盖队列的 add() 方法,将元素添加到大小受限队列中,直到队列达到最后大小。
大小受限队列的语法
Queue<data_type>队列名称 = new SizeLimitedQueue<>()
代码中使用的方法的语法
add()= 队列名称.add()
size()= 队列名称.size()
peek()= 队列名称.peek()
算法
步骤 1:通过扩展 Linked 列表类来初始化队列
步骤 2:声明一个变量来检查队列的大小。
步骤 3:重写 add() 方法:当队列达到其最大大小时,通过移除前面的元素来添加新元素。
步骤4:打印队列。
示例
import java.util.LinkedList;
import java.util.Queue;
public class SVQ {
//大小受限队列扩展了链接列表类
public static class SizeLimitedQueue<E> extends LinkedList<E> {
//声明一个大小受限队列的变量来检查队列大小
private int QueueVariable;
//初始化构造函数方法
public SizeLimitedQueue(int QueueVariable) {
this.QueueVariable = QueueVariable;
}
//overriding the add() method of Queue, so that Queue adds elements to the QueueVariable else remove the front element and add a new element.
@Override
public boolean add(E o) {
//如果队列达到其最大大小,则删除前面的元素
while (this.size() == QueueVariable) {
super.remove();
}
super.add(o);
return true;
}
}
public static void main(String[] args) {
//初始化一个大小为 4 的 Size 受限队列
Queue<Integer> sq = new SizeLimitedQueue<>(4);
//将元素 {0, 1, 2, 3, 4, 5} 添加到队列
for (int x = 0; x < 6; x++)
sq.add(x);
//打印队列的大小
int size = sq.size();
System.out.println("Size ofqueue-" + size);
//打印队列元素,队列有 {2, 3, 4, 5},由于队列大小,{0, 1} 被删除
System.out.println("Elements ofqueue" + sq);
//删除队列前端元素
int h = sq.remove();
System.out.println("Removed element-" + h);
System.out.println("队列元素" + sq);
//打印队列头部
int hq = sq.peek();
System.out.println("队列头部-" + hq);
//将 6,7 添加到队列
for (int x = 6; x < 8; x++)
sq.add(x);
System.out.println("队列元素" + sq);
}
}
输出
Size of queue-4 Elements of Queue [2, 3, 4, 5] Removed element-2 Elements of queue [3, 4, 5] Head of queue-3 Element of queue [4, 5, 6, 7]
解释
在上述代码中 -
扩展了一个 Linked list 类,以实现大小为 4 的受限队列 pq。
定义一个变量 QueueVariable 来控制定义队列的大小。
重写 add 方法,以便每次只在队列 pq 中添加 4 个元素。如果添加了新元素,队列将删除前面的元素。
将 0、1、2、3、4、5 添加到队列。pq 将只存储 4 个元素,同时删除前面的元素。结果队列元素为 [2, 3, 4, 5]。
从队列中删除前面的元素 2。现在,队列 (pq) 只有 3 个元素 [3, 4, 5],它有 1 个新数据的位置。
再次将元素 6 和 7 添加到队列。
队列 pq 只有一个空间,因此要添加 6 和 7,pq 将删除头元素 [3] 并存储 [4, 5, 6, 7]
结论
我们实现了一种方法来在 java 中定义一个大小受限的队列,大小为 N。我希望本教程适合您。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

