我需要一个固定大小的队列.当我添加一个元素并且队列已满时,它应该自动删除最旧的元素.
Java中是否存在此实现?
我想要一个实现固定大小循环缓冲区的简单类.它应该是高效的,容易在眼睛上,一般打字.
编辑:目前它不需要具备MT功能.我总是可以在以后添加一个锁,在任何情况下它都不会是高并发性的.
方法应该是:.Add和我猜.List,我检索所有条目.第二个想法,我认为应该通过索引器完成检索.在任何时候,我都希望能够通过索引检索缓冲区中的任何元素.但请记住,从一个时刻到下一个Element [n]可能会有所不同,因为循环缓冲区填满并翻转.
这不是一个堆栈,它是一个循环缓冲区.关于"溢出":我希望内部会有一个包含项目的数组,随着时间的推移,缓冲区的头部和尾部将围绕该固定数组旋转.但这应该是用户不可见的.应该没有外部可检测的"溢出"事件或行为.
这不是学校作业 - 它通常用于MRU缓存或固定大小的事务或事件日志.
我需要保持前N(<1000)个整数,同时尝试从一个大整数列表中添加值(大约一百万个大小的惰性列表).我想尝试将值添加到集合中,但是只需要保留前N个(最高值)整数.是否有任何首选数据结构用于此目的?
如果元素的总数大于X,我正在寻找一个实现Collection并丢失最旧元素的Java类add().它是否存在或者我必须自己实现它?
我需要一个线程安全的.
我对java(和整体编程)相当新,并且已经收到了从头到尾实现Sliding Window对象的任务.骨架代码如下:
import java.util.Scanner;
//implement class SlidingWindow
class Main {
// this is the test code for the judge, do not modify
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int windowSize = scanner.nextInt();
SlidingWindow window = new SlidingWindow(windowSize);
while (scanner.hasNextInt())
{
int value = scanner.nextInt();
window.Put(value);
System.out.println("[" + window.Min() + " " + window.Max() + "]");
}
scanner.close();
}
Run Code Online (Sandbox Code Playgroud)
需要做些什么(以及我迄今为止解决它的想法)
创建一个可以使用窗口大小n实例化的滑动窗口w:
SlidingWindow w = New SlidingWindow(n)//这是最让我感到烦恼的是 - 它是一个自我增长的阵列吗?链表?
输入方法Put接受整数并且没有返回值:
public static void Put(int value){//实现将依赖于SlidingWindow
最大和最小方法返回最近输入的最小值和最大值.我将通过寻找最小值和最大值来做到这一点.
如果输入的数量超过窗口的大小,则应丢弃最旧的元素. …
java是否包括一个本机类,该类允许最多数量的元素,并且如果我再输入一个元素,它将自动删除旧的元素(例如,基于自然排序)?
如果没有,我当然可以自己写,但是我只是想问一下。
我需要一个简单的缓存机制.
我想跟上最近添加的100个最新项目,但不超过这个限制.当我添加另一个项目时,我希望该集合自动删除第101个项目.想象一下,将LifeSaver糖果推入管中 - 当我在管的一端添加另一个糖果时,另一端糖果会掉出来.
写我自己很简单.在执行"添加"之前,我的"添加"方法将首先删除最旧的项目.我只是想知道是否已经写过这样的课程.
我查看了捆绑的Collection类,List,Queue等.我也看了一下谷歌番石榴.但似乎都没有这个简单的功能.
这对谷歌来说是个难题,因为我不知道这种行为的行话.