天天看點

Java源碼系列(一)集合

(一)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,然後進行與運算;

三,強軟弱虛引用

四,容器的同步控制和隻讀設定