java,已知数量的枚举的集合

时间:2013-09-05 09:01:23

标签: java collections

如果符合以下条件我应该使用哪种收藏品:

  1. 我想存储最多5 Enums集合
  2. 阅读,编写和迭代收集可能会发生多次     每秒次数
  3. 如果我需要添加新元素,那么最旧的元素     元素将被删除(假设它有e1...e5,当我添加e6时,它将被删除     e2...e6)。
  4. 我将几乎总是迭代整个集合。我想LinkedList是我需要的,但我在Java中没有经验,所以我想确定。

3 个答案:

答案 0 :(得分:2)

LinkedBlockingQueue

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

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

答案 1 :(得分:1)

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

您可以使用Collections Framework中的LinkedList。它实现了Queue Interface。

Read more about Linked List in Java

答案 2 :(得分:0)

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

像这样使用:

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

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

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

尽管如此,将它与Queue界面一起使用也是一个好主意。这样你就可以随意改变实际的实现方式。