打印Java Map Map<String, Object> - 如何实现?

65

如何从以对象为值的地图中打印信息?

我创建了以下地图:

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

该对象具有其自己的类和实例变量。

我已经向上述映射填充了数据。

我创建了一个printMap方法,但似乎只能打印出地图的键。

如何使用for each循环使地图打印<Object>值?

到目前为止,我有:

for (String keys : objectSet.keySet())
{
   System.out.println(keys);
}
以上内容打印出键。我希望能够打印出对象变量。

3
Map 接口只有 keySet 方法吗?它没有其他方法吗? - Savior
4
你刚刚尝试了 println(map) 吗? - chrylis -cautiouslyoptimistic-
此外,“keys”并不是一个好的变量名,因为实际上只有一个键。 - undefined symbol
3个回答

140

我相信已经有一些很好的库可以为您完成这样的事情... 但只是坚持您现有的方法,Map#entrySet会给您一个组合了keyvalueObject。所以可以像下面这样做:

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));

3
将Lambda函数从J8链接。 - as - if
3
这个答案应该被采纳,太不符合 Stack Overflow 的礼仪了!感谢您的发帖。 - James Drinkard

11
您可以使用Map.entrySet()方法:
for (Map.Entry entry : objectSet.entrySet())
{
    System.out.println("key: " + entry.getKey() + "; value: " + entry.getValue());
}

3

HashMap中有一个get方法:

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

我会在使用这种方法处理时间敏感的应用程序时小心,因为内部的get方法是线性搜索O(n),以查找相应的值。 - Quazi Irfan
2
get方法在内部调用getNode(hash(key), key)方法,该方法使用哈希。仅当发生哈希冲突时才进行线性搜索。 - randominstanceOfLivingThing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接