(一)hashCode()和equals
如上:在hashmap的底層實作是連結清單+數組:
(二)那些年實作過的源碼
Stringbuffer(Stringbuilder):内部由數組實作 ;擴容為每次變為原來的2倍+2;差別Stringbuffer的方法線程安全,使用了重量級鎖synchronized,修飾了所有方法
ArrayList(Vector):内部是數組,每次擴容為原來的1.5,vector線程安全,
hashmap的裝填因子:0.75
以上是jdk1.8的源碼,當拉米塔=0.5時,也就是期望和方差都是0.5時;
二:hashmap和hashtable 以及Properties
hashmap繼承自abstructMap抽象類,線程不安全 ,而hashtable繼承自dictionary接口線程安全
hashMap的putval方法:由put方法包裝,因為n是2的整數次幂,是以這裡使用了n-1,就得到了,所有位都是1,然後進行與運算;
三,強軟弱虛引用
四,容器的同步控制和隻讀設定