java string - ¿Hay alguna razón por la cual EnumMap y EnumSet no son navegables?




2 Answers

Mi mejor suposición es que la navegabilidad no se consideraba un caso de uso importante para los conjuntos enum. No hay nada en la implementación que impida la navegabilidad. Los raros casos de uso que combinan la necesidad de un conjunto de miembros enum con navegabilidad están cubiertos por TreeSet y TreeMap .

with values

Enum es comparable, lo que significa que puede tener

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

Estos tienen tiempos de acceso O (ln N).

Las colecciones Enum tienen tiempos de acceso O (1), pero no son navegables.

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

Me preguntaba si había una razón por la que las colecciones de Enum no fueran Navegables (y Clasificadas). es decir, me estoy perdiendo algo?




La publicación no responde directamente a la pregunta, ni intenta, simplemente transmite por qué se introdujo Navegable.

Publicar como me pidieron (y es demasiado largo para un comentario)

La respuesta corta es que Navigable existe porque no teníamos nada como los próximos "defensores". Sorted no describía todas las funciones comunes, y no había manera de hacerlo excepto para presentar una nueva interfaz. En la práctica, estoy seguro de que "Ordenado" todavía se usa mucho más a menudo que "Navegable" como tipo de declaración, porque la mayoría de las personas no necesitan los métodos definidos en Navegable pero no Ordenado. Además, "Navegable" no es un nombre muy bonito :-)

-Doug




Related

java collections enums