相关疑难解决方法(0)

容纳Java的最后N个元素的大小限制队列

关于Java库的一个非常简单快速的问题:是否有一个现成的类,它实现了Queue一个固定的最大大小 - 即它总是允许添加元素,但它会默默地删除头元素以容纳新添加元素的空间.

当然,手动实现它是微不足道的:

import java.util.LinkedList;

public class LimitedQueue<E> extends LinkedList<E> {
    private int limit;

    public LimitedQueue(int limit) {
        this.limit = limit;
    }

    @Override
    public boolean add(E o) {
        super.add(o);
        while (size() > limit) { super.remove(); }
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,Java stdlibs中没有标准的实现,但可能是Apache Commons中的那个或类似的东西?

java queue collections

185
推荐指数
5
解决办法
11万
查看次数

具有固定大小的Java PriorityQueue

我正在计算一个algortihm的大量可能的结果组合.要对这些组合进行排序,我使用双倍值对它们进行评级,并将它们存储在PriorityQueue中.目前,该队列中有大约20万个项目,这几乎是内存集成.实际上,我只需要说出列表中所有项目中最好的1000或100.所以我开始问自己是否有办法在Java中拥有一个固定大小的优先级队列.我的行为应该是这样的:物品是否比已存储的物品更好?如果是,请将其插入相应的位置并抛出最小等级的元素.

有没有人有想法?再次感谢!

马尔科

java size list priority-queue

34
推荐指数
4
解决办法
3万
查看次数

在 Java 中为 Deque 分配大小

我在为双端队列 (Deque) 的大小分配限制时遇到问题。似乎我的队列永远不会满,并且每当我为其添加或提供值时就会调整大小。我的简单代码只接受一个字符串值,用空格“”分割它,循环所有内容并将其添加到队列中。

evaluate("A B C D E F");

public static int evaluate(final String input){
    final Deque<String> stack = new ArrayDeque<>(3);
    final String[] tokens = input.split(" ");


    for (String token:tokens){
        System.out.println(stack.offer(token));
    }

    System.out.println(stack.size());
 }
Run Code Online (Sandbox Code Playgroud)

返回:

 true
 true
 true
 true
 true
 true
 6
Run Code Online (Sandbox Code Playgroud)

我预计队列将已满,因为我没有从中删除或读取任何值。我在这里缺少什么吗?或者我只是错误地使用了队列?谢谢!

java deque arraydeque

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

固定长度队列,当在末尾添加元素时删除第一个元素(先进先出)

Python中是否有这样一个队列的实现,它具有固定长度,当满时,弹出最左边的元素,同时在右边追加一个元素?

假设q = Queue([1,2,3,4,5])我的队列的最大长度为 5,我说q.append(6),那么预期输出print(q)应该是Queue([2,3,4,5,6])

这个问题也可以链接到:是否有一个固定大小的队列可以删除过多的元素?

python queue

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

完整的循环队列?

我们刚刚在课堂上学习循环队列,我有几个问题.因为我们将尾部定义为最后一个值旁边的空白区域,如下所示:

|1| |3|4|5|6|
Run Code Online (Sandbox Code Playgroud)

头部将指向数字3,尾部将指向1到3之间的空白空间.我对如果该空间被填满会发生什么感到困惑,例如下面:

|1|2|3|4|5|6|
Run Code Online (Sandbox Code Playgroud)

然后头部仍然指向3,但是尾部需要指向前面空白框之后的下一个框,因此它将指向3或标题.我该怎么办?

queue

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

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

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

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

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

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

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

java collections

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

标签 统计

java ×4

queue ×3

collections ×2

arraydeque ×1

deque ×1

list ×1

priority-queue ×1

python ×1

size ×1