2012-03-13 11 views
5

Sé que el .keySet() devuelve un conjunto, que no está ordenado.¿Will hashmap.keyset() devolverá las claves en el orden en que se agregaron al hashmap?

Por lo que puedo decir, eso significa que necesito mantener una lista de teclas para seguir el orden en que se agregaron las claves al hashmap, ¿correcto?

+1

posible duplicado de [Comportamiento del conjunto de claves de LinkedHashMap() y valores() métodos] (http://stackoverflow.com/questions/9583650/behaviour-of-linkedhashmaps-keyset-and-values -methods) –

+0

Esto es más bien una observación sobre el "Comportamiento de * HashMap's * keySet method" aunque. – aioobe

Respuesta

8

[...] eso significa que necesito mantener una lista de teclas para seguir el orden en que se agregaron las claves al hashmap, ¿correcto?

Sí, eso es correcto. O bien, puede usar un LinkedHashMap que hace esto por usted.

De la documentación:

[...] Esta aplicación se diferencia de HashMap, ya que mantiene una lista doblemente enlazada corriendo a través de todas sus entradas. Esta lista vinculada define el orden de iteración, , que normalmente es el orden en el que se insertaron las claves en el mapa (orden de inserción). [...]

+0

Otra posibilidad es un TreeMap. Tenga en cuenta que todas estas clases lo hacen es garantía de que la iteración estará en orden, no que el conjunto devuelto por keySet() tendrá un orden en particular. –

+0

hashmap vinculado parece lo que necesito. ¿Cómo anulo removeEldestEntry para que vaya solo por orden de inserción, sin orden de acceso? – bernie2436

+0

Hmm. No estoy seguro de lo que quiere decir con acceso-orden. La entrada más antigua es probablemente la clave que primero se insertó. – aioobe

Cuestiones relacionadas