[英]Print all key/value pairs in a Java 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);
}
這給出了大約 10 個不同鍵的輸出,計數似乎是映射到總插入次數的總和。
我測試了您的代碼並正常工作。 我添加了一個小演示,用另一種方式打印地圖中的所有數據:
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);
}
HashMap 將forEach
作為其結構的一部分。 您可以將其與 lambda 表達式一起使用以打印出一行中的內容,例如:
map.forEach((k,v)-> System.out.println(k+", "+v));
or
map.forEach((k,v)-> System.out.println("key: "+k+", value: "+v));
你可以做類似的事情
Iterator iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next().toString();
Integer value = map.get(key);
System.out.println(key + " " + value);
}
這里的“地圖”是您的並發 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
ConcurrentHashMap
與HashMap
類非常相似,除了ConcurrentHashMap
提供內部維護的並發性。 這意味着在多線程應用程序中訪問ConcurrentHashMap
時不需要同步塊。
要獲取ConcurrentHashMap
所有鍵值對,下面與您的代碼類似的代碼完美運行:
//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());
}
上面的代碼在您的應用程序的多線程環境中是合理有效的。 我說“合理有效”的原因是,上面的代碼雖然提供了線程安全性,但仍然會降低應用程序的性能。
希望這對你有幫助。
工作 100% 確定嘗試使用此代碼獲取所有哈希映射鍵和值
static HashMap<String, String> map = new HashMap<>();
map.put("one" " a " );
map.put("two" " b " );
map.put("three" " c " );
map.put("four" " d " );
只要你想顯示 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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.