【问题标题】:enum in ordered list or set有序列表或集合中的枚举
【发布时间】:2011-03-07 09:19:20
【问题描述】:

我想创建一个有序集或列表,并将枚举添加到集合中,以便它们按枚举顺序插入。
我可以在不创建显式比较器的情况下执行此操作吗?有没有一个集合会使用枚举的固有顺序来维护集合中的顺序?

Groovy 中我想要做的示例(我希望它与使用 for 循环而不是闭包的 Java 类似):

TreeSet<TransactionElement> elements = new TreeSet<TransactionElement>() 
        elementList.each{ element -> elements.add(element)}

TransactionElement 是一个枚举,元素应该按照它们在枚举中列出的顺序添加到 TreeSet

更新: 我选择的解决方案:

EnumSet<TransactionElement> elements = EnumSet.noneOf(TransactionElement.class); 
        elementList.each{ element -> elements.add(element)}

关于如何使用 EnumSet 和 EnumMap here 的一些很好的例子

【问题讨论】:

    标签: java groovy enums


    【解决方案1】:

    如果您想要Setenum 值,那么EnumSet 可能是您最好的选择。不仅比使用非特化的Set 效率更高,而且还保证迭代将按照enum 的自然顺序进行。

    【讨论】:

      【解决方案2】:

      也许你可以看看EnumSet 的实现。

      【讨论】:

        【解决方案3】:

        默认情况下,Enums 声明顺序定义了 Enums 的自然顺序。来自 compareTo 的 javadoc:

        枚举常量只能与 同一枚举的其他枚举常量 类型。自然顺序由 此方法是其中的顺序 声明了常量。

        【讨论】:

          猜你喜欢
          • 2011-08-02
          • 2012-08-19
          • 2020-08-10
          • 2015-07-26
          • 1970-01-01
          • 1970-01-01
          • 2011-01-08
          • 1970-01-01
          • 2015-10-14
          相关资源
          最近更新 更多