小编典典

在 Java 中打印 HashMap

all

我有一个HashMap

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

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

我写了这个:

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

它似乎不起作用。

问题是什么?

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


阅读 80

收藏
2022-09-02

共1个答案

小编典典

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

在您的示例中,哈希映射键的类型为TypeKey,但您TypeValue在 generic中指定for-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?

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

2022-09-02