HashMap

与Hashtable相比的区别:不是线程安全的,允许null。 当bin过大时,变成treenode。可以加快搜索速度。同一个bin中的元素按照hashcode排序,如果hashcode相同,如果comparable,按照compareTo方法排序。如果hashcode不同或者是comparable的,时间复杂度O(lg(n))。bin里的node 频率满足泊松分布。»> Shift right zero fill operator,把高位数字移动到低位在做异或操作。 compareTo少于返回负值,等于返回0,大于返回正值。通过移位操作,将首次出现1之后的位全部设置成1。 generics wildcard: Map不是Map的父类,所以要用Map<? extends Object> safe to get hash & (cap-1)取后面几位的值作为entry值。hash & cap通过最后一位的值将entry上的列表拆分到两个新entry上。 method里面的this可以省略。string的compareTo方法比较两个字符串的字典序差值。identityHashCode用于标记object的一个随机数。如果两个object equals那么两个object的hashcode必须相同。因为使用hashmap等hash工具类时,equals的对象hash必定相等,hash相等的对象不一定equals。找对象时,先通过hash值找bucket,再通过equals遍历列表。