一、HashMap與Hashtable區(qū)別
HashMap:非線程安全,允許鍵和值null。
Hashtable:線程安全,不允許鍵和值null。
CorrentHashMap:線程安全,不允許鍵和值null。
二、CorrentHashMap的工作原理
jdk1.8中在HashMap基礎(chǔ)上堆Node中Value和next都用volatile修飾來保證并發(fā)的可見性。
jdk1.7中采用分段鎖,一個(gè)CorrentHashMap相當(dāng)于多個(gè)Segment(桶)組合,每個(gè)segment相當(dāng)于一個(gè)Hashtable,這樣相對(duì)于整體每次只鎖Segment而不是鎖整張表。
三、Array和ArrayList區(qū)別
Array:可以容納基本類型和對(duì)象,大小固定。
ArrayList:只容納對(duì)象,大小動(dòng)態(tài)變化(擴(kuò)容,每次擴(kuò)充當(dāng)前一般,復(fù)制數(shù)據(jù))。
四、ArrayList與LinkeList區(qū)別
ArrayList LinkeList
實(shí)現(xiàn)List接口 實(shí)現(xiàn)List接口
基于數(shù)組 基于鏈表
O(1) O(n)
查找速度快 插入添加刪除快
更占內(nèi)存,多了倆個(gè)引用前后元素