Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do EnumSet is not a SortedSet [duplicate]

Enum is Comparable which means you can have

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

These have O(ln N) access times.

The Enum collections have O(1) access times, but are not Navigable

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

I was wondering if there was a reason Enum collections were not Navigable (and Sorted). i.e Am I missing something?

like image 389
Peter Lawrey Avatar asked Nov 21 '22 19:11

Peter Lawrey


1 Answers

Many "obvious" features are missing from the JDK and its various APIs. Why this particular feature was omitted / forgotten? We can only guess. But your question has been a RFE at Sun/Oracle for a long time:

  • http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6278287
  • http://www.java.net/node/644910

You could support those RFEs by commenting on them. Note, here's an authoritative answer by Joshua Bloch on the subject:

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

So even he had to guess :-)

like image 73
Lukas Eder Avatar answered Nov 23 '22 10:11

Lukas Eder