一:遍历HashMap的两种方法:
1、使用EntrySet遍历HashMap
2、使用KeySet遍历HashMap
二、HashMap源码解析
如果key为null,则调用putForNullKey(value),先检查Entry[]中是否有key=null的Entry,如果有则把原来的value值取出来
赋值给一个临时变量,将新的value覆盖原来的value,同时返回原来的value,如果没有key=null的Entry,则直接把null和value
添加到Entry[]数组中:如下所示
如果key不为null,首先调用key.hashCode()方法返回对象Key的hash code value,在通过hash算法,对刚才返回的hash code value 进行加工处理确保hash code的不同:如下
在根据hash code value 和Entry[]的长度找到对象Key所在的下标index,
如果有重复的key了,先取出原来的,在将新的Value值覆盖原来的,讲原来的value返回;
如果没有重复的key,直接把key-value存入Entry中。
参考资料: