我有一个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/