Java Language Piège - Itérer les clés d'une carte peut être inefficace


Exemple

L'exemple de code suivant est plus lent que nécessaire:

Map<String, String> map = new HashMap<>(); 
for (String key : map.keySet()) {
    String value = map.get(key);
    // Do something with key and value
}

En effet, il nécessite une recherche de carte (la méthode get() ) pour chaque clé de la carte. Cette recherche peut ne pas être efficace (dans un HashMap, cela implique d'appeler hashCode sur la clé, puis de rechercher le bon compartiment dans les structures de données internes, et parfois même d'appeler des equals ). Sur une grande carte, ceci peut ne pas être une surcharge triviale.

La manière correcte d'éviter ceci est d'itérer sur les entrées de la carte, ce qui est détaillé dans la rubrique Collections.