67 votes

La fonction entrySet() dans un LinkedHashMap garantit-elle également l'ordre ?

J'utilise un linkedHashMap pour garantir l'ordre lorsque quelqu'un essaie d'y accéder. Toutefois, au moment de l'itération, l'utilisation de entrySet() pour renvoyer des paires clé/valeur garantit-elle également l'ordre ? Aucune modification ne sera apportée pendant l'itération.

EDITAR: De plus, y a-t-il des effets négatifs à itérer dans la carte en itérant dans ses clés et en appelant get ?

51voto

Michael Myers Points 82361

Según la Javadocs Oui.

Cette mise en œuvre diffère de HashMap en ce qu'il maintient une liste doublement liée passant par toutes ses entrées. Cette liste liée définit l'ordre d'itération, qui est normalement l'ordre dans lequel les clés ont été insérées dans la carte ( ordre d'insertion ).

Quant à l'édition, non, elle devrait fonctionner parfaitement. Mais l'ensemble d'entrée est un peu plus rapide car il évite la surcharge de la recherche de chaque clé dans la carte pendant l'itération.

1voto

Robert Points 3044

Cette liste liée définit l'ordre d'itération, qui est normalement l'ordre dans lequel les clés ont été insérées dans la carte (insertion-order). Notez que l'ordre d'insertion n'est pas affecté si une clé est réinsérée dans la carte. (Une clé k est réinsérée dans une map m si m.put(k, v) est invoqué alors que m.containsKey(k) renverrait vrai juste avant l'invocation).

1voto

Daniel F. Thornton Points 3024

Si vous êtes sûr qu'aucun changement ne sera fait pendant l'itération, alors la commande appropriée avec entrySet() est garantie, comme indiqué dans le API .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X