4

如果出现以下情况,我应该使用哪种收藏:

  1. 我想存储最大值。5Enums在集合
  2. 每秒可以多次读取、写入和迭代集合
  3. 如果我需要添加新元素,那么最旧的元素将被删除(假设它有e1...e5,当我添加e6它时 e2...e6)。

我几乎总是会遍历整个系列。我想LinkedList这是我需要的,但我不是很有经验Java,所以我想确定一下。

4

3 回答 3

2

链接阻塞队列

LinkedBlockingQueue lbq =new LinkedBlockingQueue(5);
if(!(lbq.offer(newOBject)){
  lbq.take();
  lbq.offer(newObject);
}

EnumMap也可能很有用,键仅限于枚举实例。

于 2013-09-05T09:15:31.983 回答
1

您需要的是一个支持 FIFO 的队列数据结构。

您可以使用 Collections Framework 中的 LinkedList。它实现了队列接口。

阅读更多关于 Java 中的链表

于 2013-09-05T09:07:05.843 回答
0

如果您不需要强制执行队列的容量,您可以使用LinkedList. 它实现Queue了接口,这是您真正需要的。

像这样使用它:

Queue<EnumClass> queue = new LinkedList<EnumClass>();
queue.offer(newObj);
takenObj = queue.poll();

如果您必须限制大小ArrayBlockingQueue那将是一个不错的选择,因为不会有额外的内部对象创建(由数组支持的集合)。

Queue<EnumClass> queue = new ArrayBlockingQueue<EnumClass>(capacity);

不过,将它与Queue接口一起使用将是一个好主意。这样您就可以随意更改实际的实现。

于 2013-09-05T09:35:48.733 回答