枚举是可比较的,这意味着你可以拥有
NavigableSet<AccessMode> modes = new TreeSet<>();
NavigableMap<AccessMode, Object> modeMap = new TreeMap<>();
这些有 O(ln N) 访问时间。
Enum 集合的访问时间为 O(1),但不可导航
NavigableSet<AccessMode> modes = EnumSet.noneOf(AccessMode.class); // doesn't compile
NavigableMap<AccessMode, Object> modeMap = new EnumMap<>(AccessMode.class); // doesn't compile
我想知道是否存在枚举集合不可导航(和排序)的原因。即我错过了什么吗?
最佳答案
JDK 及其各种 API 中缺少许多“明显”的功能。为什么忽略/忘记了这个特定功能?我们只能猜测。但是您的问题在 Sun/Oracle 很长时间以来一直是 RFE:
您可以通过评论来支持这些 RFE。请注意,这是 Joshua Bloch 对这个主题的权威回答:
I vaguely recall considering it, but I can't recall whether we explicitly rejected it with good reason. We were running very low on time when I implemented EnumSet and EnumMap, and it's possible that time played a role in our decision
http://comments.gmane.org/gmane.comp.java.jsr.166-concurrency/2158
所以即使是他也不得不猜测 :-)
关于java - 有什么原因 EnumMap 和 EnumSet 不可导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34367506/