secretos ordenado ordenada orden mantener los limpio limpieza como casa java collections map order

java - ordenado - Cómo mantener el orden de inserción utilizando colecciones



los secretos del orden la limpieza en tu casa (3)

Quiero agregar una clave, un par de valores en una tabla hash (o cualquier otra colección), pero tengo que mantener el orden de inserción. ¿Cómo puedo hacer esto?

Como agregaré 1 como clave "uno" como valor, 2 como clave y "dos" como valor.

La salida debe ordenarse como:

1:one 2:two


Estas son las diferencias características de algunas implementaciones de Map importantes:

  • LinkedHashMap : "con orden de iteración predecible [...] que normalmente es el orden en el que se insertaron las claves en el mapa ( orden de inserción )".
  • HashMap : "no garantiza el orden del mapa"
  • TreeMap : "se clasifica según el orden natural de sus claves, o por un Comparator "

Entonces, parece que LinkedHashMap es lo que necesita en este caso.

Aquí hay un fragmento para ilustrar las diferencias; también muestra una forma común de iterar sobre todas las entradas de un Map , y cómo el uso de una interfaz para referirse a objetos permite una gran flexibilidad de elección de implementación.

import java.util.*; public class MapExample { public static void main(String[] args) { populateThenDump(new HashMap<String,Integer>()); populateThenDump(new TreeMap<String,Integer>()); populateThenDump(new LinkedHashMap<String,Integer>()); } static void populateThenDump(Map<String,Integer> map) { System.out.println(map.getClass().getName()); map.put("Zero", 0); map.put("One", 1); map.put("Two", 2); map.put("Three", 3); map.put("Four", 4); for (Map.Entry<String,Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + " => " + entry.getValue()); } } }

El resultado del fragmento anterior es ( como se ve en ideone.com ):

java.util.HashMap // unordered, results may vary Three => 3 Zero => 0 One => 1 Four => 4 Two => 2 java.util.TreeMap // ordered by String keys lexicographically Four => 4 One => 1 Three => 3 Two => 2 Zero => 0 java.util.LinkedHashMap // insertion order Zero => 0 One => 1 Two => 2 Three => 3 Four => 4

Preguntas relacionadas

Preguntas similares



Su búsqueda termina en LinkedHashMap ..... :)