相关疑难解决方法(0)

是否有固定大小的队列来删除多余的元素?

我需要一个固定大小的队列.当我添加一个元素并且队列已满时,它应该自动删除最旧的元素.

Java中是否存在此实现?

java queue

117
推荐指数
6
解决办法
6万
查看次数

您将如何使用Java或C#编写高效的循环缓冲区?

我想要一个实现固定大小循环缓冲区的简单类.它应该是高效的,容易在眼睛上,一般打字.

编辑:目前它不需要具备MT功能.我总是可以在以后添加一个锁,在任何情况下它都不会是高并发性的.

方法应该是:.Add和我猜.List,我检索所有条目.第二个想法,我认为应该通过索引器完成检索.在任何时候,我都希望能够通过索引检索缓冲区中的任何元素.但请记住,从一个时刻到下一个Element [n]可能会有所不同,因为循环缓冲区填满并翻转.

这不是一个堆栈,它是一个循环缓冲区.关于"溢出":我希望内部会有一个包含项目的数组,随着时间的推移,缓冲区的头部和尾部将围绕该固定数组旋转.但这应该是用户不可见的.应该没有外部可检测的"溢出"事件或行为.

这不是学校作业 - 它通常用于MRU缓存或固定大小的事务或事件日志.

c# java class-design

43
推荐指数
3
解决办法
7万
查看次数

是否有类似于Apache Commons CircularFifoBuffer的番石榴?

我需要一个能够以FIFO顺序有效缓冲特定数量元素的数据结构.

正如在这个问题中所提到的,Apache Commons有一个CircularFifoBuffer,但遗憾的是它并没有被广泛化.有些 叉子存在,但我不确定它们的维护状态.

由于Guava是我的收藏需求的首选图书馆,我想知道:番石榴有一个很好的选择吗?如果没有,我应该在我的项目中实现它,基于Apache Commons的CircularFifoBuffer?

java collections apache-commons guava

19
推荐指数
2
解决办法
9555
查看次数

固定大小的集合,用于保存Java中的顶级(N)值

我需要保持前N(<1000)个整数,同时尝试从一个大整数列表中添加值(大约一百万个大小的惰性列表).我想尝试将值添加到集合中,但是只需要保留前N个(最高值)整数.是否有任何首选数据结构用于此目的?

java

12
推荐指数
3
解决办法
6087
查看次数

在add()上丢失最旧元素的集合

如果元素的总数大于X,我正在寻找一个实现Collection并丢失最旧元素的Java类add().它是否存在或者我必须自己实现它?

我需要一个线程安全的.

java

7
推荐指数
1
解决办法
4091
查看次数

实现滑动窗口(java)

我对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 arrays linked-list sliding-window

2
推荐指数
1
解决办法
1万
查看次数

Java是否具有带有删除策略的有界Collection?

可能重复:
大小受限制的队列,其中包含Java中的最后N个元素

java是否包括一个本机类,该类允许最多数量的元素,并且如果我再输入一个元素,它将自动删除旧的元素(例如,基于自然排序)?

如果没有,我当然可以自己写,但是我只是想问一下。

java

1
推荐指数
1
解决办法
2455
查看次数

是否有Java集合可以在添加更多项目时删除项目?(一个简单的缓存)

我需要一个简单的缓存机制.

我想跟上最近添加的100个最新项目,但不超过这个限制.当我添加另一个项目时,我希望该集合自动删除第101个项目.想象一下,将LifeSaver糖果推入管中 - 当我在管的一端添加另一个糖果时,另一端糖果会掉出来.

写我自己很简单.在执行"添加"之前,我的"添加"方法将首先删除最旧的项目.我只是想知道是否已经写过这样的课程.

我查看了捆绑的Collection类,List,Queue等.我也看了一下谷歌番石榴.但似乎都没有这个简单的功能.

这对谷歌来说是个难题,因为我不知道这种行为的行话.

java collections

1
推荐指数
1
解决办法
1754
查看次数