web-dev-qa-db-fra.com

itération de clé java hashmap

Existe-t-il un moyen d'effectuer une itération dans un tableau de hachage Java et d'imprimer toutes les valeurs pour chaque clé faisant partie du tableau de hachage?

17
ping

Avec pour chaque boucle, utilisez Map.keySet() pour les clés itératives, Map.values() pour les valeurs itératives et Map.entrySet() pour les paires clé/valeur itératives.

Notez que toutes ces vues sont des vues directes de la carte utilisée pour les acquérir. Toute modification apportée à l’une des trois cartes ou à la carte elle-même sera répercutée sur toutes les autres.

16
Esko

Oui, vous faites cela en obtenant la entrySet() de la carte. Par exemple:

Map<String, Object> map = new HashMap<String, Object>();

// ...

for (Map.Entry<String, Object> entry : map.entrySet()) {
    System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue());
}

(Bien sûr, remplacez String et Object par les types que votre Map possède - le code ci-dessus n’est qu’un exemple).

22
Jesper
for (Map.Entry<T,U> e : map.entrySet())
{
    T key = e.getKey();
    U value = e.getValue();
    .
    .
    .
}

De plus, si vous utilisez une carte LinkedHashMap comme implémentation, vous pourrez itérer dans l'ordre dans lequel les paires clé/valeur ont été insérées. Si ce n'est pas important, utilisez un HashMap.

2
Jim Garrison
public class abcd {
    public static void main(String[] args)
    {
       Map<Integer, String> testMap = new HashMap<Integer, String>();
        testMap.put(10, "a");
        testMap.put(20, "b");
        testMap.put(30, "c");
        testMap.put(40, "d");
        for (Entry<Integer, String> entry : testMap.entrySet()) {
            Integer key=entry.getKey();
            String value=entry.getValue();
        }
    }
}
2
Fathah Rehman P
hashmap.keySet().iterator()

utilisez une boucle for pour l'itérer.

puis utilisez hashmap.get(item) pour obtenir des valeurs individuelles, 

Sinon, utilisez simplement entrySet() pour obtenir un itérateur de valeurs.

1
Sanjay Manohar

Java 8 ajouté Map.forEach que vous pouvez utiliser comme ceci:

map.forEach((k, v) -> System.out.println("key=" + k + " value=" + v));

Il y a aussi replaceAll si vous souhaitez mettre à jour les valeurs:

map.replaceAll((k, v) -> {
    int newValue = v + 1;
    System.out.println("key=" + k + " value=" + v + " new value=" + newValue);
    return newValue;
});
0
Alex