dictionary ¿Clase de Java que implementa Map y mantiene el orden de inserción?



4 Answers

Si un mapa inmutable se adapta a sus necesidades , hay una biblioteca de google llamada guava (consulte también las preguntas sobre guava )

guava proporciona un ImmutableMap con un orden confiable de iteración especificado por el usuario. Este ImmutableMap tiene un rendimiento de O (1) para contentsKey, get. Obviamente, poner y quitar no son compatibles.

ImmutableMap objetos ImmutableMap se construyen utilizando los elegantes métodos of() conveniencia estática of() y copyOf() o un objeto Builder .

java dictionary key-value

Estoy buscando una clase en java que tenga asociación clave-valor, pero sin usar hashes. Esto es lo que estoy haciendo actualmente:

  1. Agrega valores a un Hashtable .
  2. Obtenga un iterador para Hashtable.entrySet() .
  3. Iterar a través de todos los valores y:
    1. Obtener un Map.Entry para el iterador.
    2. Cree un objeto de tipo Module (una clase personalizada) basado en el valor.
    3. Agrega la clase a un JPanel.
  4. Mostrar el panel.

El problema con esto es que no tengo control sobre el orden en el que recupero los valores, por lo que no puedo mostrar los valores en un orden dado (sin codificar el orden).

ArrayList un ArrayList o Vector para esto, pero más adelante en el código necesito agarrar el objeto Module para una Clave dada, lo que no puedo hacer con un ArrayList o Vector .

¿Alguien sabe de una clase de Java libre / de código abierto que haga esto, o una forma de obtener valores de un Hashtable basado en cuándo se agregaron?

¡Gracias!




Puede mantener un Map (para una búsqueda rápida) y una List (para ordenar), pero un LinkedHashMap puede ser el más simple. También puede probar un SortedMap por ejemplo, TreeMap , que tiene cualquier orden que especifique.







Puede usar LinkedHashMap para el orden de inserción principal en el Mapa

Los puntos importantes sobre la clase LinkedHashMap de Java son:

  1. Contiene elementos únicos únicos.
  2. Un LinkedHashMap contiene valores basados ​​en la clave 3. Puede tener una clave nula y varios valores nulos. 4.Es lo mismo que HashMap en cambio mantiene el orden de inserción

    public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> 
    

Pero si desea ordenar los valores en el mapa utilizando un objeto definido por el usuario o cualquier clave de tipo de datos primitivo, debe utilizar TreeMap. Para obtener más información, consulte este enlace.




Related