2

Map からキーと値の両方のエントリを抽出するためにコードを複製していることに気付くことがあります (たとえば、サードパーティ API をテスト/デバッグする場合)。

Map<String, String> someMap;
Set<String> keys = someMap.keySet();
for(int j=0;j<someMap.size();j++){
    String key = (String) keys.toArray()[j];
    System.out.println("key > " + key + "  : value = " + someMap.get(key));
}

Groovy にはこれに対するいくつかの優れた抽象化があることは知っていますが (例: Get key in groovy maps )、私は POJ に制約されています。確かに、これを行うには、よりエレガントで冗長でない方法が必要です。つまり、Java でしょうか?

4

3 に答える 3

9

for-each loop でそれを使用Entry<String,String>して繰り返すことができます。を使用してオブジェクトを取得します。EntryMap.entrySet()

Entry.getKey()エントリからのキーと値は、 と を使用して抽出できます。Entry.getValue()

コード例:

Map<String, String> someMap;
for (Entry<String,String> entry : someMap.entrySet()) {
    System.out.println("key > " + entry.getKey()+ "  : value = " + entry.getValue());
}
于 2012-07-18T08:21:51.117 に答える
5

for each ループを使用してコードを簡略化できます。

Map<String, String> someMap;
for(String key : someMap.keySet()){
    System.out.println("key > " + key + "  : value = " + someMap.get(key));
}

または、エントリ セットを使用してこれを行います。私がまだ回答を編集している間に、アミットはそのためのコードを提供しました;-)

于 2012-07-18T08:27:33.720 に答える
0

何をしようとしているかに応じて、Google コレクションにはMaps API があり、マップなどを変換するためのヘルパー関数を提供します。

マップをきれいに印刷するだけの場合は、この投稿が役立つ場合があります

于 2012-07-18T08:25:02.950 に答える