tl; dr
Para mantener Map< Integer , String >un orden ordenado por clave, use cualquiera de las dos clases que implementan las interfaces SortedMap/ NavigableMap:
TreeMap
ConcurrentSkipListMap
Si manipula el mapa dentro de un solo hilo, use el primero TreeMap,. Si manipula a través de hilos, use el segundo,ConcurrentSkipListMap ,.
Para más detalles, consulte la tabla a continuación y la siguiente discusión.
Detalles
Aquí hay una tabla gráfica que hice mostrando las características de los diez Map implementaciones incluidas con Java 11.
La NavigableMapinterfaz es lo que SortedMapdebería haber sido en primer lugar. losSortedMap lógica debe ser retirado, pero no puede ser tan algunas implementaciones mapa tercera partes pueden estar usando la interfaz.
Como puede ver en esta tabla, solo dos clases implementan las interfaces SortedMap/ NavigableMap:
Ambos mantienen las claves en orden, ya sea por su orden natural (utilizando el compareTométodo de Comparable( https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ Comparable.html ) interfaz) o por una Comparatorimplementación que pasa. La diferencia entre estas dos clases es que la segunda ConcurrentSkipListMapes segura para subprocesos , altamente concurrente .
Consulte también la columna Orden de iteración en la tabla a continuación.
- La
LinkedHashMapclase devuelve sus entradas por el orden en que se insertaron originalmente .
EnumMapdevuelve entradas en el orden en que se define la clase enum de la clave . Por ejemplo, un mapa de qué empleado cubre qué día de la semana ( Map< DayOfWeek , Person >) usa la DayOfWeekclase enum integrada en Java. Esa enumeración se define con el lunes primero y el domingo pasado. Entonces las entradas en un iterador aparecerán en ese orden.
Las otras seis implementaciones no prometen el orden en que informan sus entradas.
