linkedlist funciona como java linkedhashmap

java - funciona - ¿EntrySet() en un LinkedHashMap también garantiza el pedido?



linkedhashmap vs hashmap (3)

Estoy utilizando un HashMap vinculado para garantizar el orden cuando alguien intenta acceder a él. Sin embargo, cuando llega el momento de iterar sobre él, ¿el uso de entrySet () para devolver los pares clave / valor también garantiza el orden? No se realizarán cambios durante la iteración.

EDITAR: Además, ¿hay efectos adversos de iterar a través del mapa al iterar a través de sus teclas y llamar a obtener?


Esta lista enlazada define el orden de iteración, que normalmente es el orden en que se insertaron las claves en el mapa (orden de inserción). Tenga en cuenta que el orden de inserción no se ve afectado si una clave se reinserta en el mapa. (Una clave k se reinserta en un mapa m si m.put (k, v) se invoca cuando m.containsKey (k) devolverá verdadero inmediatamente antes de la invocación).


Según los Javadocs , sí.

Esta implementación difiere de HashMap en que mantiene una lista con un enlace doble que se ejecuta en todas sus entradas. Esta lista enlazada define el orden de iteración, que normalmente es el orden en que se insertaron las claves en el mapa ( orden de inserción ).

En cuanto a la edición, no, debería funcionar bien. Pero el conjunto de entradas es algo más rápido, ya que evita la sobrecarga de buscar cada clave en el mapa durante la iteración.


Si está seguro de que no se realizarán cambios durante la iteración, se garantiza el orden correcto con entrySet() , como se indica en la API .