【发布时间】:2014-12-31 13:58:47
【问题描述】:
我是 Enum 的新手。在学习 Enum 时,我遇到了 EnumSet 和 EnumMap。我知道在使用 EnumSet 和 EnumMap 处理 map 和 set 时,比这个问题中的散列对应物要好得多。
Why an EnumSet or an EnumMap is likely to be more performant than their hashed counterparts?
我的问题是
Java中的Enum在什么场景下需要Map和Set?
我对了解实际场景更感兴趣。
【问题讨论】:
-
当你想要命名为“flag”时,你需要
EnumSet(比使用ints 和bit-magic 的可读性要好得多)。当您想为枚举值分配值或默认值/函数时,您需要EnumMap。 -
你的问题不是很清楚。您是否想了解 EnumMap 和 EnumSet 优于 HashMap 和 HashSet 的场景,或者您是否在问何时应该使用 EnumMap 以及何时使用 EnumSet(假设是因为您混淆了它们)?
-
我只是想知道,为什么或何时我们需要一个集合(Map 和 Set)用于枚举。对不起,如果我的问题令人困惑。
-
由于 EnumMap 和 EnumSet 更好,所以你可以随时使用。
-
@mvg:您在编译时知道所有可能的枚举值,但不一定知道在运行时要使用它们的哪个组合。也许它们是从配置文件中读取的可能枚举值的子集,或者您正在处理一周中的某一天的子集。
标签: java enums enumset enum-map