集合——HashMap的工作原理
http://www.importnew.com/16301.html 好的链接 HashMap的工作原理? 1. HashMap的底层结构是 数组加链表 ; a.HashMap包含一个Entry(key,value,next,hash)的内部类,key/value放入HashMap 的时候都会被包装成Entry的 对象 b.HashMap成员就有Entry数组,该数组的大小默认是16,永远都是2的次方数,如果自己给出的不是 2的次方数会转换成大 于并接近自己给的2 的次方数。 put(key,value)就是转换成Entry对象并放入数组中。 2.put方法的实现; c.1 根据key的HashCode进行Hash运算,得到hash值 c.2 根据hash值去确定数组的位置, hash&(table.length-1)等价于hash%(table.length) length是2的次方数该 公式成立, 正获取数组的位置 <bucket>。 c.3 如果这个位置没有元素存在,直接包装成Entry实例,给元素数组附值; 如果计算出的位置有元素已经存在,就会判断key是否相同,如果相同就会覆盖,并且遍历整个链表 如果都不覆盖插入到链表的头部 。 for (Entry<K,V> e = table [ i ]; e != null ; e = e . next ) 注意1