2016-04-21 70 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)); 
相关问题