java中怎样遍历Map

java的集合中,Set和List都实现了Collection接口,而映射Map没有实现Collection接口,所以不能用迭代器直接遍历Map中的元素,而有时候,我们又需要遍历Map中的所有键/值,本文将介绍java中遍历Map的方法


由于本人水平有限,本文难免会有不当之处,欢迎读者批评指正

java中怎样遍历Map

java的集合中,Set和List都实现了Collection接口,而映射Map没有实现Collection接口,所以不能用迭代器直接遍历Map中的元素,而有时候,我们又需要遍历Map中的所有键/值,这时候可以通过Map.EntryentrySet来解决

1)通过建立一个迭代器遍历entrySet,如下所示:

1
2
3
4
5
6
7
8
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
}
}

2)还有一种更简单的方式
如果想遍历键,则可以通过KeySet()来实现,如下所示

1
2
3
4
5
Map<String, Object> map = ...;

for (String key : map.keySet()) {
// ...
}

如果想遍历值,则可以通过values来实现,如下所示

1
2
3
for (Object value : map.values()) {
// ...
}

如果两者都想遍历,则可以通过entrySet来实现,如下所示

1
2
3
4
5
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
// ...
}

参考文档

https://stackoverflow.com/questions/1066589/iterate-through-a-hashmap