2011-03-07 25 views
3

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

例如在什么我想要做的Groovy(我希望这将是对Java有一个for循环,而不是关闭类似):

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

TransactionElement是一个枚举和要素应加在顺序TreeSet中它们在枚举上市

UPDATE: 解决方案我去:

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

如何一些伟大的例子给我们e EnumSet和EnumMap here

回答

7

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

1

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

枚举常量只能与相同的枚举 类型的 其他枚举常量。 这个方法实现的自然顺序是声明常量的顺序。