J'essaie simplement d'imprimer toutes les paires clé/valeur dans un ConcurrentHashMap.
J'ai trouvé ce code en ligne que je pensais le faire, mais il semble obtenir des informations sur les buckets/hashcode. En fait, pour être honnête, la sortie est assez étrange, il est possible que mon programme soit incorrect, mais je veux d'abord m'assurer que cette partie est ce que je veux utiliser.
for (Entry<StringBuilder, Integer> entry : wordCountMap.entrySet()) {
String key = entry.getKey().toString();
Integer value = entry.getValue();
System.out.println("key, " + key + " value " + value);
}
Cela donne une sortie pour environ 10 clés différentes, avec des nombres qui semblent être la somme du nombre total d'insertions dans la carte.
J'ai testé votre code et fonctionne correctement. J'ai ajouté une petite démo avec une autre façon d'imprimer toutes les données de la carte:
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<String, Integer>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
for (String key : map.keySet()) {
System.out.println(key + " " + map.get(key));
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey().toString();
Integer value = entry.getValue();
System.out.println("key, " + key + " value " + value);
}
Le HashMap a forEach
dans sa structure. Vous pouvez l'utiliser avec une expression lambda pour imprimer le contenu dans une seule ligne telle que:
map.forEach((k,v)-> System.out.println(k+", "+v));
Vous pouvez faire quelque chose comme
Iterator iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next().toString();
Integer value = map.get(key);
System.out.println(key + " " + value);
}
Ici, "map" est votre concurrent HashMap.
//best and simple way to show keys and values
//initialize map
Map<Integer, String> map = new HashMap<Integer, String>();
//Add some values
map.put(1, "Hi");
map.put(2, "Hello");
// iterate map using entryset in for loop
for(Entry<Integer, String> entry : map.entrySet())
{ //print keys and values
System.out.println(entry.getKey() + " : " +entry.getValue());
}
//Result :
1 : Hi
2 : Hello
Travaillez à 100%, essayez ce code pour la clé et la valeur get all hashmap
static HashMap<String, String> map = new HashMap<>();
map.put("one" " a " );
map.put("two" " b " );
map.put("three" " c " );
map.put("four" " d " );
il suffit d'appeler cette méthode chaque fois que vous souhaitez afficher la valeur HashMap
private void ShowHashMapValue() {
/**
* get the Set Of keys from HashMap
*/
Set setOfKeys = map.keySet();
/**
* get the Iterator instance from Set
*/
Iterator iterator = setOfKeys.iterator();
/**
* Loop the iterator until we reach the last element of the HashMap
*/
while (iterator.hasNext()) {
/**
* next() method returns the next key from Iterator instance.
* return type of next() method is Object so we need to do DownCasting to String
*/
String key = (String) iterator.next();
/**
* once we know the 'key', we can get the value from the HashMap
* by calling get() method
*/
String value = map.get(key);
System.out.println("Key: " + key + ", Value: " + value);
}
}
ConcurrentHashMap
est très similaire à la classe HashMap
, sauf que ConcurrentHashMap
offre une concurrence simultanée maintenue en interne. Cela signifie que vous n'avez pas besoin d'avoir des blocs synchronisés lors de l'accès à ConcurrentHashMap
dans une application multithread.
Pour obtenir toutes les paires clé-valeur dans ConcurrentHashMap
, le code ci-dessous qui est similaire à votre code fonctionne parfaitement:
//Initialize ConcurrentHashMap instance
ConcurrentHashMap<String, Integer> m = new ConcurrentHashMap<String, Integer>();
//Print all values stored in ConcurrentHashMap instance
for each (Entry<String, Integer> e : m.entrySet()) {
System.out.println(e.getKey()+"="+e.getValue());
}
Le code ci-dessus est raisonnablement valide dans un environnement multithread dans votre application. La raison, je dis "raisonnablement valide" est que, au-dessus du code fournit encore la sécurité des threads, il peut encore diminuer les performances de l'application.
J'espère que cela vous aidera.