有序列表或集合中的枚举

时间:2011-03-07 09:19:20

标签: java groovy enums

我想创建一个有序集或列表,并将枚举添加到集合中,以便以枚举顺序插入它们。
我可以不创建明确的比较器吗?是否有一个集合将使用枚举的固有顺序来维护集合中的顺序?

我希望做什么的Groovy示例(我希望Java与for循环而不是闭包相似):

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

的一些很好的例子

3 个答案:

答案 0 :(得分:7)

如果您想要Set enum个值,那么EnumSet可能是您最好的选择。使用非专用Set不仅更有效,而且还保证迭代将以enum的自然顺序工作。

答案 1 :(得分:3)

也许您可以查看EnumSet实施。

答案 2 :(得分:1)

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

  

枚举常数只能与之比较   同一枚举的其他枚举常量   类型。由...实施的自然顺序   这个方法是在哪个顺序   常量被声明。