有序列表或集合中的枚举
我想创建一个有序集或列表,并将枚举添加到集合中,以便它们按枚举顺序插入。
我可以在不创建显式比较器的情况下执行此操作吗?是否有一个集合将使用枚举的固有顺序来维护集合中的顺序?
我想要做的 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 的一些很好的示例 这里
I want to create an ordered set, or list, and add enums to the collection so they are inserted in enum order.
Can I do this without creating an explicit comparator? Is there a collection that will use the inherent order of the enum to maintain the order in the collection?
Example in Groovy of what I want to do (I expect it will be similar for Java with a for loop instead of a closure):
TreeSet<TransactionElement> elements = new TreeSet<TransactionElement>()
elementList.each{ element -> elements.add(element)}
TransactionElement is an enum and the elements should be added to the TreeSet in the order they are listed in the enum
UPDATE:
Solution I went with:
EnumSet<TransactionElement> elements = EnumSet.noneOf(TransactionElement.class);
elementList.each{ element -> elements.add(element)}
Some great examples of how to use EnumSet and EnumMap here
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您想要
enum
值的Set
,则EnumSet
可能是您最好的选择。它不仅比使用非专用Set
更高效,而且还保证迭代将按照enum
的自然顺序进行。If you want a
Set
ofenum
values, thenEnumSet
is probably your best bet. Not only is it more efficient that using a non-specializedSet
, it also guarantees that the iteration will work in the natural order of theenum
.也许您可以看一下 EnumSet实施。
Maybe you could tale a look at the EnumSet implementation.
默认情况下,枚举声明顺序定义了枚举的自然顺序。来自compareTo的javadoc:
By default Enums declaration order defines the natural ordering of the Enums. From javadoc of compareTo: