web-dev-qa-db-ja.com

javaハッシュマップキーの反復

Javaハッシュマップを反復処理し、ハッシュマップの一部であるすべてのキーのすべての値を出力する方法はありますか?

18
ping

for-eachループの場合、キーの繰り返しには Map.keySet() を使用し、 Map.values() 反復値の場合 Map.entrySet() キー/値ペアの反復の場合。

これらはすべて、取得に使用されたマップへの直接のビューであるため、3つまたはマップのいずれかに対して行った変更は、他のすべてにも反映されます。

16
Esko

はい、これはマップのentrySet()を取得することによって行います。例えば:

Map<String, Object> map = new HashMap<String, Object>();

// ...

for (Map.Entry<String, Object> entry : map.entrySet()) {
    System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue());
}

(もちろん、StringObjectを、特定のMapが持つ型に置き換えてください-上記のコードは単なる例です)。

23
Jesper
public class abcd {
    public static void main(String[] args)
    {
       Map<Integer, String> testMap = new HashMap<Integer, String>();
        testMap.put(10, "a");
        testMap.put(20, "b");
        testMap.put(30, "c");
        testMap.put(40, "d");
        for (Entry<Integer, String> entry : testMap.entrySet()) {
            Integer key=entry.getKey();
            String value=entry.getValue();
        }
    }
}
3
Fathah Rehman P
for (Map.Entry<T,U> e : map.entrySet())
{
    T key = e.getKey();
    U value = e.getValue();
    .
    .
    .
}

さらに、LinkedHashMapを実装として使用する場合は、キーと値のペアが挿入された順序で反復します。それが重要でない場合は、HashMapを使用してください。

2
Jim Garrison
_hashmap.keySet().iterator()
_

forループを使用して繰り返します。

次に、hashmap.get(item)を使用して個々の値を取得します。

または、entrySet()を使用して、値のイテレータを取得します。

1
Sanjay Manohar

Java 8が追加されました Map.forEach これは次のように使用できます。

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

値を更新する場合は replaceAll もあります。

map.replaceAll((k, v) -> {
    int newValue = v + 1;
    System.out.println("key=" + k + " value=" + v + " new value=" + newValue);
    return newValue;
});
0
Alex

シンプルにしてください:

HashMap<String,String> HeyHoLetsGo = new HashMap();

HeyHoLetsGo.put("I", "wanna be your dog");
HeyHoLetsGo.put("Sheena", "is a punk rocker");
HeyHoLetsGo.put("Rudie", "can't fail");

for ( String theKey : HeyHoLetsGo.keySet() ){
    System.out.println(theKey + " "+HeyHoLetsGo.get(theKey));
}
0
Lemmy_Caution