在Java中打印HashMap

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我有一个HashMap:

private HashMap<TypeKey,TypeValue > example= new HashMap<TypeKey, TypeValue>();

现在我想穿过所有的值并打印它们。

我写了这个:

for (TypeValue name: this.example.keySet()){

        System.out.println(name);
} 

它似乎没有工作。

问题是什么?

另一个问题:这个集合是否为零?我的意思是如果它有1个键和值将大小为0或1?

提问于
用户回答回答于

keySet()只返回hashmap中的一组密钥,您应该迭代此密钥集并使用这些密钥从hashmap中获取值。

在你的例子中,hashmap的键的类型是TypeKey,但是你TypeValue在你的泛型for循环中指定的,所以它不能被编译。您应该将其更改为:

for (TypeKey name: example.keySet()){

            String key =name.toString();
            String value = example.get(name).toString();  
            System.out.println(key + " " + value);  


} 

如果您不需要打印键值并只需要hashmap值,则可以使用其他人的建议。

另一个问题:这个收藏是否为零基?我的意思是如果它有1个键和值将它的大小为0或1?

返回的集合keySet()是一个集合。您无法使用索引从集合中获取值,因此它不是基于零或基于一个的问题。如果你的散列表有一个关键字,那么返回的keySet()将有一个条目,其大小为1。

用户回答回答于

查看键值对的简单方法:

Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
System.out.println(Arrays.asList(map)); // method 1
System.out.println(Collections.singletonList(map)); // method 2

方法1和方法2都输出:

[{b=2, a=1}]

扫码关注云+社区