簡體   English   中英

打印 Java ConcurrentHashMap 中的所有鍵/值對

[英]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

ConcurrentHashMapHashMap類非常相似,除了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM