在Java ConcurrentHashMap中打印所有键/值对

Dan*_*don 12 java collections hashmap concurrenthashmap

我试图简单地在ConcurrentHashMap中打印所有键/值对.

我在网上找到了这个代码,我认为会这样做,但它似乎是获取有关桶/哈希码的信息.其实说实话输出很奇怪,可能我的程序不正确,但我首先要确保这部分是我想要使用的.

for (Entry<StringBuilder, Integer> entry : wordCountMap.entrySet()) {
    String key = entry.getKey().toString();
    Integer value = entry.getValue();
    System.out.println("key, " + key + " value " + value);
}
Run Code Online (Sandbox Code Playgroud)

这为大约10个不同的键提供输出,其计数似乎是映射到插入的总插入数的总和.

Sli*_*imu 31

我测试了你的代码并正常工作.我添加了一个小型演示,用另一种方法打印地图中的所有数据:

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);
}
Run Code Online (Sandbox Code Playgroud)


小智 19

HashMap forEach作为其结构的一部分.您可以将其与lambda表达式一起使用,以打印出一行内容,例如:

map.forEach((k,v)-> System.out.println(k+", "+v));
Run Code Online (Sandbox Code Playgroud)


nik*_*o28 6

你可以做点什么

Iterator iterator = map.keySet().iterator();

while (iterator.hasNext()) {
   String key = iterator.next().toString();
   Integer value = map.get(key);

   System.out.println(key + " " + value);
}
Run Code Online (Sandbox Code Playgroud)

这里'map'是您的并发HashMap.