2016-04-21 54 views
1

如何從包含該對象作爲值的地圖打印信息?打印java映射Map <String,Object> - 如何?

我創建了以下地圖:

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

的對象都有自己的類自己的實例變量

我已經填充了數據上面的地圖。

我已經創建了一個printMap方法,但我只能似乎打印地圖

怎樣的鑰匙做我得到的地圖用於打印用每個循環的<Object>值?

到目前爲止,我有:

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

上面打印出的鑰匙。我希望能夠打印出對象變量。

+3

'Map'只有'keySet'方法嗎?它沒有其他方法嗎? – Savior

+1

你剛試過'println(地圖)'嗎? – chrylis

回答

3

你可以使用Map.entrySet()方法:

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

有一個get方法的HashMap:

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

因爲內部獲取方法是[線性搜索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

9

我敢肯定有,做這樣的事情已經給你一些不錯的庫。 ..但只是堅持你已經採取的方法,Map#entrySet給你一個組合Objectkeyvalue。所以像這樣:

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)); 
相關問題