循环访问哈希映射
迭代 HashMap
中项目的最佳方法是什么?
如果您只对键感兴趣,则可以循环访问映射的 keySet():
Map<String, Object> map = ...;
for (String key : map.keySet()) {
// ...
}
如果只需要这些值,请使用 values()
:
for (Object value : map.values()) {
// ...
}
最后,如果同时需要键和值,请使用 entrySet()
:
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
// ...
}
一个警告:如果你想在迭代过程中删除项目,你需要通过迭代器来做到这一点(参见karim79的答案)。但是,更改项目值是可以的(请参阅 Map.Entry
)。
循环访问 entrySet(),
如下所示:
public static void printMap(Map mp) {
Iterator it = mp.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
System.out.println(pair.getKey() + " = " + pair.getValue());
it.remove(); // avoids a ConcurrentModificationException
}
}
阅读有关地图
的更多信息。