如果符合以下条件我应该使用哪种收藏品:
Enums
集合e1...e5
,当我添加e6
时,它将被删除
e2...e6
)。我将几乎总是迭代整个集合。我想LinkedList
是我需要的,但我在Java
中没有经验,所以我想确定。
答案 0 :(得分:2)
LinkedBlockingQueue lbq =new LinkedBlockingQueue(5);
if(!(lbq.offer(newOBject)){
lbq.take();
lbq.offer(newObject);
}
EnumMap也可能有用,键仅限于枚举实例。
答案 1 :(得分:1)
这里需要的是一个支持FIFO的队列数据结构。
您可以使用Collections Framework中的LinkedList。它实现了Queue Interface。
答案 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
界面一起使用也是一个好主意。这样你就可以随意改变实际的实现方式。