EnumMap<K extends Enum<K>, V>
en Java está claramente ordenado por definición de la enumeración asociada, como también se puede ver en el javadoc:
Los mapas de enumeración se mantienen en el orden natural de sus claves (el orden en que se declaran las constantes de enumeración). Esto se refleja en los iteradores devueltos por las vistas (colecciones keySet()
, entrySet()
y values()
).
Lo que necesito es SortedMap
usar una enumeración como tipo de clave. Quiero usar métodos como headMap()
o firstKey()
, pero quiero sacar provecho del rendimiento agregado de la CPU + memoria de EnumMap
s. A TreeMap
parece demasiado sobrecarga aquí.
Pregunta : ¿se perdió esto en la implementación, fue pereza (derivado de AbstractMap
) o hay una buena razón por la cual EnumMap
no es un SortedMap
?
TreeMap
?Respuestas:
Esto no responderá a su pregunta principal (porque solo los diseñadores originales tienen la respuesta), pero un enfoque que estaba considerando era que la implementara usted mismo. Mientras trataba de hacer una
SortedMap
implementación basada enEnumMap
, se me ocurrió la siguiente clase.Esta es seguramente una implementación rápida y sucia (y tenga en cuenta que no cumple totalmente
SortedMap
, porque no se cumplen los requisitos de vista ), pero si necesita una, puede mejorarla:Y para una prueba rápida (errores aún por encontrar):
Yo obtengo:
fuente
Solicitud de función abierta
Pude encontrar este problema para OpenJDK . Es de 2005 pero aún está abierto / sin resolver.
Supongo que no hay ninguna "buena razón" para que esto no se implemente.
fuente