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

我正在尝试简单地打印并发哈希映射中的所有键/值对。

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

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

这将提供大约 10 个不同键的输出,其计数似乎是插入到地图中的总次数的总和。


答案 1

我测试了您的代码并正常工作。我添加了一个小演示,其中包含另一种打印地图中所有数据的方法:

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);
}

答案 2

HashMap是其结构的一部分。您可以将其与 lambda 表达式结合使用,以一行形式打印出内容,例如:forEach

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

or

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