是否有任何原因EnumMap和EnumSet不可导航


问题内容

枚举可比,这意味着您可以拥有

NavigableSet<AccessMode> modes = new TreeSet<>();
NavigableMap<AccessMode, Object> modeMap = new TreeMap<>();

这些具有O(ln N)访问时间。

枚举集合具有O(1)访问时间,但不可导航

NavigableSet<AccessMode> modes = EnumSet.noneOf(AccessMode.class); // doesn't compile
NavigableMap<AccessMode, Object> modeMap = new EnumMap<>(AccessMode.class);  // doesn't compile

我想知道是否有一个原因,枚举集合不可导航(和排序)。即我想念什么吗?


问题答案:

我最好的猜测是,可导航性并未被视为枚举集的主要用例。在实现中,没有什么会阻止可导航性。TreeSet和涵盖了将一组枚举成员的需要与可导航性结合在一起的罕见用例TreeMap