2011-11-29 12 views
14

quiero algo donde pueda insertar pares clave/valor, y el orden es el orden en que insertar los elementos de.colección de Java que tiene par clave/valor, y se ordenan de acuerdo a insertar fin

tengo he visto algunas publicaciones relacionadas con el mapa, pero parece que tengo que escribir mi propio comparador para ellas.

Quiero que el primer elemento que inserte sea el primero almacenado, y el segundo sea el segundo elemento de la colección, etc.

+1

Es llamado "LinkedHashMap" –

Respuesta

18

Trate de usar un LinkedHashMap, desde el javadocs:

tabla hash y lista enlazada implementación de la interfaz del mapa, con orden de iteración predecible Esta aplicación se diferencia de HashMap en que mantiene una doblemente enlazada- lista ejecutando todas sus entradas. Esta lista vinculada define el orden de iteración, que normalmente es el orden en el que las claves se insertaron en el mapa (orden de inserción).

7

¿Por qué no crear simplemente un class para contener una clave y un valor, y luego almacenarlos en su implementación favorita List?

class Pair { 
    Key k; 
    Value v; 
} 

List<Pair> stuff = new ArrayList<Pair>(); 

Pair p = new Pair(); 
... 
stuff.add(p); 
1

parece que tendría que utilizar una lista con un objeto de nombre/valor

List<NameValuePair> values = new Arraylist<NameValuePair>(); 

y luego utilizar la lista como lo haría una lista normal de

class NameValuePair { 
    private name; 
    private value; 

    ... get/set 
} 
+0

Yo prefiero LinkedHashMap sugerencia, pero, si sigue esta ruta, consulte Map.Entry y considere seriamente usarlo en lugar de definir su propia clase NameValuePair. – user949300

+1

@ user949300: 'Map.Entry ' es una interfaz, no una clase, y no conozco ninguna clase pública de JDK que la implemente. Estoy de acuerdo en que 'NameValuePair' debería implementarlo. – ruakh

+2

@ruakh Echa un vistazo a AbstractMap.SimpleEntry y AbstractMap.SimpleImmutableEntry. – user949300

0

LinkedHashMap es el correcto tipo de estructura de datos que estás buscando! Como extiende el HashMap (que le permite tener un elemento en el par clave/valor) y mantiene una lista enlazada (que le proporciona el orden de inserción) de las entradas.

También puedes ver los siguientes tipos de mapas para obtener más información:

https://docs.oracle.com/javase/8/docs/api/

Ir a AbstractMap y comprobar estos

HashMap & TreeMap

HashTable- http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html

Cuestiones relacionadas