2016-04-21 8 views
1

オブジェクトを値として持つマップから情報を印刷するにはどうすればよいですか?Javaマップの印刷Map <String、Object> - 方法

私は、次のマップを作成しました:

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

オブジェクトは、私はすでにデータと上記マップを埋めてきた独自のインスタンス変数

で独自のクラスを持っています。

私は各ループのために使用して<Object>値を印刷するためのマップを取得する?私はprintMapメソッドを作成しましたが、私はのみ行う方法マップのキー

を印刷するように見えることができますか

はこれまでのところ、私が持っている:キーアウト

for (String keys : objectSet.keySet()) 
{ 
    System.out.println(keys); 
} 

上記プリント。私もオブジェクト変数を出力することができるようにしたい。

for (Map.Entry entry : objectSet.entrySet()) 
{ 
    System.out.println("key: " + entry.getKey() + "; value: " + entry.getValue()); 
} 
+3

'Map'には' keySet'メソッドしかありませんか?他の方法はありませんか? – Savior

+1

'println(map)'を試しましたか? – chrylis

答えて

3

あなたはMap.entrySet()メソッドを使用することができます。しかし、あなたがすでに進んでいるアプローチに固執するには、は、keyvalue。だから、のようなもの:

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

はあなたが後にしているものを行います。


Java 8を使用している場合は、新しいストリーミングアプローチもあります。

map.forEach((key, value) -> System.out.println(key + ":" + value)); 
0

はHashMapのでget方法があります:私はあなたのために、すでにこの種のものを行い、いくつかの素敵なライブラリがあります確信している

for (String keys : objectSet.keySet()) 
{ 
    System.out.println(keys + ":"+ objectSet.get(keys)); 
} 
+0

内部的にgetメソッドが[線形検索O(n)](http://grepcode.com/file/repository.grepcode.com/java/root/jdk)であるため、このアプローチを時間に敏感なアプリケーションに使用する場合は注意が必要です/openjdk/8u40-b25/java/util/HashMap.java#HashMap.getNode%28int%2Cjava.lang.Object%29)を返します。 –

+1

getメソッドは内部的にハッシュを使用するgetNode(hash(key)、key)を呼び出します。これは、ハッシュの衝突がある場合にのみ、線形検索を行います。 – randominstanceOfLivingThing

関連する問題