我有一个HashMap:
HashMap
private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>();
现在我想遍历所有值并打印它们。
我写了这个:
for (TypeValue name : this.example.keySet()) { System.out.println(name); }
它似乎不起作用。
问题是什么?
编辑:另一个问题:这个集合是从零开始的吗?我的意思是,如果它有 1 个键和值,那么大小是 0 还是 1?
keySet()仅从哈希映射返回一组键,您应该迭代此键集并使用这些键从哈希映射中获取值。
keySet()
在您的示例中,哈希映射键的类型为TypeKey,但您TypeValue在 generic中指定for-loop,因此无法编译。您应该将其更改为:
TypeKey
TypeValue
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。
Set