【问题标题】:Immutable version of EnumSetEnumSet 的不可变版本
【发布时间】:2015-04-09 10:08:45
【问题描述】:

我找不到EnumSetImmutable 版本。两个问题:

我可以在普通 Guava ImmutableSet 中使用枚举吗?

如果可以,使用 ImmutableSet 代替 EnumSet 有哪些好处/缺点?

【问题讨论】:

    标签: java collections set immutability


    【解决方案1】:

    您是否在寻找Sets.immutableEnumSet (Guava)?

    返回一个包含给定枚举元素的不可变集合实例。在内部,返回的集合将由 EnumSet 支持。

    返回集合的迭代顺序遵循枚举的迭代顺序,而不是元素在给定集合中出现的顺序。

    【讨论】:

    • 超链接已损坏。你能纠正一下吗?看起来 Java 8 中有一个增强功能需要支持。 bugs.openjdk.java.net/browse/JDK-8145048
    • @gurubelli:修复了链接;目前没有时间调查 Java 8 的情况,但希望您的评论足以满足任何人的需求。
    【解决方案2】:

    这有问题吗?

    Collections.unmodifiableSet(myEnumSet);
    

    【讨论】:

    • 在某些情况下,不可变比简单的不可修改更好。不可修改的集合不保证永远不会更改其内容,它们仅保证您无法更改内容。
    • 答案返回 Set<Enumtype> 而不是 EnumSet<Enumtype>。并且Collections.unmodifiableSet() 的结果不能转换为EnumSet<Enumtype>
    猜你喜欢
    • 2016-02-22
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2011-09-08
    相关资源
    最近更新 更多