java - 在 Java 中打印 HashMap

标签 java collections

我有一个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,但您在通用 for-loop 中指定了 TypeValue,所以它无法编译。您应该将其更改为:

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

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

Another question: Is this collection is zero base? I mean if it has 1 key and value will it size be 0 or 1?

keySet() 返回的集合是 Set .您无法使用索引从集合中获取值,因此它不是从零开始还是从一开始的问题。如果你的 hash map 有一个 key,返回的 keySet() 里面会有一个 entry,它的 size 是 1。

关于java - 在 Java 中打印 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920135/

相关文章:

java - 每个请求如何具有不同的Elastic Spring Data索引

java - com.ximpleware 解析 XML - XPath - ==> 末尾或附近的语法错误

用户的 Java JDBC 访问被拒绝

Magento:在网格中加入左表

java - 为清楚起见命名集合扩展

java - REST - 发送用户 ID 与从 Principal 获取用户 ID

java - 使用 Java 在 EPS 文件中添加元数据

arrays - 代码优化: Arrays vs collections

c# - 在非常大的集合 (10,000) 中更改值

jpa - 如何使用 JPQL 从连接表中删除条目?