首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java,已知枚举的集合

java,已知枚举的集合
EN

Stack Overflow用户
提问于 2013-09-05 09:01:23
回答 3查看 71关注 0票数 4

如果:

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

我将几乎总是迭代整个集合。我想LinkedList是我所需要的,但我在Java方面不是很有经验,所以我想确定一下。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-05 09:15:31

LinkedBlockingQueue

代码语言:javascript
复制
LinkedBlockingQueue lbq =new LinkedBlockingQueue(5);
if(!(lbq.offer(newOBject)){
  lbq.take();
  lbq.offer(newObject);
}

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

票数 2
EN

Stack Overflow用户

发布于 2013-09-05 09:07:05

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

您可以从集合中使用LinkedList,Framework.It实现队列接口。

阅读关于Java链接列表的更多信息

票数 1
EN

Stack Overflow用户

发布于 2013-09-05 09:35:48

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

像这样使用它:

代码语言:javascript
复制
Queue<EnumClass> queue = new LinkedList<EnumClass>();
queue.offer(newObj);
takenObj = queue.poll();

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

代码语言:javascript
复制
Queue<EnumClass> queue = new ArrayBlockingQueue<EnumClass>(capacity);

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18632047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档