Java队列固定大小的数据结构

标签 java arrays queue

我每隔几毫秒就有一个网络数据流。我需要删除第一个元素,并在发生这种情况时将一个元素添加到固定大小列表的末尾(即“移位”)。这些元素是简单的float

我应该使用什么数据结构,有使用示例吗?

最佳答案

您有多种选择。最简单的当然是使用 Queue,Java 为您提供了一些实现( arrayblockingconcurrentlinked )。您可以覆盖其中任何一个来添加移位方法:

public E shift(E newElement) {
    E old = take();
    put(newElement);
    return old;
}

为了确保线程安全,您需要一些同步。

如果出于某种原因您更喜欢其他集合,那也是可能的。请注意,这些可能不是线程安全的。我不会使用 ArrayList,因为它的复杂性相当差,但 LinkedList 应该没问题。覆盖它需要这种转变:

public E shift(E newElement) {
    E old = getFirst();
    addLast(newElement);
    return old;
}

只要只使用shift方法,就可以确定固定大小。如果你想强制它,你将不得不重写更多方法,或者使用委托(delegate)者。

关于Java队列固定大小的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21369261/

相关文章:

arrays - 如何将二维数组(30x20)扩展到 620x480 二维数组中包含的 36x60?

c++ - 指向二维数组的指针

python - python中是否有非同步队列

c++ - "deque.h"中的 android-ndk-r7c 不合格 id 错误

JavaRX 分页 - 在每次交互中而不是在最后观察 - 通用分页器

java - 在Micronaut的声明式客户端中传递自定义 header

java - C# out IntPtr 在 Java 中等效

Eclipse 调试器 : Variable view when using nested Java HashMap, ArrayList

c++ - 从一维数组中反转 channel 值

java - Java 中具有并行化的链式过滤器