有序列表或集合中的枚举

发布于 2024-10-20 12:46:39 字数 735 浏览 2 评论 0原文

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

我想要做的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

懒的傷心 2024-10-27 12:46:39

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

If you want a Set of enum values, then EnumSet is probably your best bet. Not only is it more efficient that using a non-specialized Set, it also guarantees that the iteration will work in the natural order of the enum.

≈。彩虹 2024-10-27 12:46:39

也许您可以看一下 EnumSet实施。

Maybe you could tale a look at the EnumSet implementation.

留一抹残留的笑 2024-10-27 12:46:39

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

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

By default Enums declaration order defines the natural ordering of the Enums. From javadoc of compareTo:

Enum constants are only comparable to
other enum constants of the same enum
type. The natural order implemented by
this method is the order in which the
constants are declared.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文