HashMap遍历四种方法

参考:https://blog.csdn.net/kyi_zhu123/article/details/52769469

使用

第一种:通过keySet,最常使用

1
2
3
for (String key : map.keySet()) {
System.out.println("key:" + key + ",value:" + map.get(key));
}

第二种:通过entrySet().iterator()

1
2
3
4
5
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
for (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
}

第三种:通过entrySet() 推荐大容量时使用

1
2
3
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
}

第四种:通过map.values()遍历所有的value

1
2
3
for (String v : map.values()) {
System.out.println("value:" + v);
}

底层原理

HashMap底层中的数组是Entry数组,它是HashMap的内部类,实现了Map.Entry这个内部接口。这个接口里面定义了一些方法,比如getKey()、getValue()等等,而Entry内部类作为接口实现类实现了这些方法。体现了java的封装性多态性