在 Java 中打印哈希映射

2022-08-31 06:57:59

我有一个 :HashMap

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

现在,我想遍历所有值并打印它们。

我写了这个:

for (TypeValue name : this.example.keySet()) {
    System.out.println(name);
}

它似乎不起作用。

问题出在哪里?

编辑:另一个问题:这个集合是基于零的吗?我的意思是,如果它有1个键和值,大小是0还是1?


答案 1

keySet() 仅从哈希映射返回一组键,您应该迭代此键集,并使用这些键从哈希映射中获取值。

在您的示例中,哈希映射键的类型是 ,但您在泛型 中指定了它,因此无法对其进行编译。您应该将其更改为:TypeKeyTypeValuefor-loop

for (TypeKey name: example.keySet()) {
    String key = name.toString();
    String value = example.get(name).toString();
    System.out.println(key + " " + value);
}

Java8 的更新:

example.entrySet().forEach(entry -> {
    System.out.println(entry.getKey() + " " + entry.getValue());
});

如果您不需要打印密钥值,而只需要哈希映射值,则可以使用其他人的建议。

另一个问题:这个集合是零基数吗?我的意思是,如果它有1个键和值,它的大小是0还是1?

从中返回的集合是一个 Set。您无法使用索引从集合中获取值,因此问题不在于它是从零开始还是基于 1。如果您的哈希映射有一个键,则返回的密钥将包含一个条目,其大小将为 1。keySet()keySet()


答案 2

查看键值对的简单方法:

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}]