web-dev-qa-db-ja.com

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の異なるキーの出力が得られます。

12
DanGordon

私はあなたのコードをテストし、適切に動作します。マップ内のすべてのデータを印刷する別の方法を使用した小さなデモを追加しました。

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

HashMapには、その構造の一部としてforEachがあります。これをラムダ式で使用して、次のような1つのライナーに内容を出力できます。

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

次のようなことができます

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

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

   System.out.println(key + " " + value);
}

ここで、「マップ」はコンカレントHashMapです。

6
nikoo28
  //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
4
Khalid Habib

すべてのハッシュマップのキーと値を取得するためにこのコードを試してください

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);
        }
    } 
0
Arpit Patel

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

上記のコードは、アプリケーションのマルチスレッド環境で合理的に有効です。その理由は、上記のコードはまだスレッドセーフを提供しますが、アプリケーションのパフォーマンスを低下させる可能性があるためです。

これがお役に立てば幸いです。

0
Shishir Kumar