Cuando se invoca LinkedHashMap.keySet(), ¿el orden del conjunto devuelto será el mismo que el orden en que se agregaron las claves?¿LinkedHashMap de Java mantiene el orden de las claves?
Respuesta
Sí.
Ver: LinkedHashMap:
Esta lista enlazada define la iteración de pedido, que normalmente es del orden en el que las teclas se insertaron en el mapa (inserción orden).
y de la documentación HashMap#keySet:
El conjunto [regresó] está respaldado por el mapa, por lo cambios en el mapa se reflejan en el conjunto, y viceversa.
@Tom gracias, todavía no estoy convencido de que esto sea explícito. ¿Por qué no LinkedHashMap.keySet() devolvería una subclase de Set con un orden fijo? – Armand
Porque si devolviera SortedSet, LinkedHashMap agregaría el requisito de que sus claves sean de un tipo que implemente Comparable, o que se proporcione una función de comparación. Esto NO es requerido por Map. Consulte la documentación de SortedSet: http://download.oracle.com/javase/6/docs/api/java/util/SortedSet.html. No tener este requisito permite que incluso las claves que no implementan Comparable se utilicen en un LinkedHashMap, que es el caso más general. La implementación de LinkedHashMap incluso podría devolver un SortedSet si sus claves SON comparables, pero simplemente no es REQUERIDO. –
Por supuesto, el contrato de LinkedHashMap dice que mantiene el orden de INSERCIÓN, que puede no ser el pedido NATURAL. Entonces, en ese caso, un SortedSet no funcionaría en absoluto; las claves simplemente no se ordenarían de esa manera. –
Yes. La excepción es que cuando se reinserta una tecla, aparece en el orden en que se insertó por primera vez en la lista.
+1 Buena captura en esa caja de esquina. –
En realidad, la excepción se aplica cuando la clave está ** reinsertada **, no se ha eliminado ni reutilizado.El caso es cuando llamas 'put (key, value)' para una clave que ya estaba en el mapa. (El javadoc lo explica claramente). –
- 1. Java: ¿forma simple de poner las claves/valores de LinkedHashMap en las listas respectivas?
- 2. Shrink LinkedHashMap en Java
- 3. orden de las claves en el diccionario de Python
- 4. Equivalente para LinkedHashMap en Python
- 5. ¿Cómo revertir el orden de las claves en python dict?
- 6. Colección clave/valor que mantiene el orden
- 7. LinkedHashMap ¿LIFO o FIFO?
- 8. Java LinkedHashMap get first or last entry
- 9. ¿entrySet() en un LinkedHashMap también garantiza el orden?
- 10. En C++, std :: multiset mantiene un orden de clasificación estable?
- 11. Obtener valores de claves dentro de un rango en Java
- 12. ¿Clase de Java que implementa Mapa y mantiene el orden de inserción?
- 13. Implementando un LinkedHashMap concurrente
- 14. Implementación de lista que mantiene el pedido
- 15. Java Establecer el orden de retención?
- 16. ¿Cómo puedo ordenar las claves de un mapa en Java?
- 17. ¿Mantiene php orden en una matriz asociativa?
- 18. Un tipo de diccionario con un orden definido de claves
- 19. ¿Cómo se mantiene el orden usando SELECT WHERE IN()?
- 20. Implementación de Scala Map manteniendo las entradas en orden de inserción?
- 21. ¿En qué orden muestra Python las claves del diccionario?
- 22. serialize/deserialize un LinkedHashMap (android) java
- 23. ¿Es aceptable el estilo para las bibliotecas de Node.js confiar en el orden de las claves de objeto?
- 24. LinkedHashMap firma
- 25. Obtiene el primer ítem de linkedhashmap
- 26. ¿Cómo puedo mantener el orden de las claves que agrego a un hash Perl?
- 27. Diccionario de Python: ¿las claves() y los valores() siempre tienen el mismo orden?
- 28. Ir: ¿qué determina el orden de iteración para las claves del mapa?
- 29. Ruby: ¿Cuál es el orden de las claves/valores devueltos por los métodos Hash.keys y Hash.values?
- 30. Ordenando LinkedHashMap
Para aquellos que vienen de PHP, permítanme ayudarles señalando que un LinkedHashMap se comporta de manera muy similar a una matriz de PHP. –