【问题标题】:java, collection for known amount of enumsjava,已知数量的枚举的集合
【发布时间】:2013-09-05 17:35:48
【问题描述】:

如果出现以下情况,我应该使用什么样的集合:

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

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

【问题讨论】:

    标签: java collections


    【解决方案1】:

    LinkedBlockingQueue

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

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

    【讨论】:

      【解决方案2】:

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

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

      Read more about Linked List in Java.

      【讨论】:

        【解决方案3】:

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

        像这样使用它:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2011-04-09
          • 1970-01-01
          • 1970-01-01
          • 2011-07-09
          • 2020-08-10
          • 1970-01-01
          • 2010-09-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多