相信大家对hashmap一定不陌生,遍历也是比较熟练地,在这里博主通过分析源码的方式来帮助大家复习下HashMap
首先给大家一张图
这是一个HashMap 很明显 hashmap是由键值对组成。
提出问题
问题
hashmap是如何存入键和值的呢?
答案 将key和value放入一个对象中 再将对象放入数组中即可。
来看一下 底层源码
对象就是Entry (node实现了Map.Entry)
所以看第一张图 我们 每一行可以看做一个entry对象 整体看做一个数组,那么第一种遍历方法出来了
遍历方式一
for (Map.Entry entry:hashMap.entrySet()) {//hashMap为实例化的对象
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
遍历方式二
对第一张图 我们竖着看 第一行(key)就是一个set集合(set的底层就是map实现)
我们可以通过获得所有key值来遍历
Set<String> keys= hashMap.keySet();
for (String key :keys) {
System.out.println(hashMap.get(key));
}
顺便一提第一张图的第二行(value)就是一个collection集合,我们可以通过
.values获得value集合