Java集合內(nèi)容歸納

Java集合常用的是List、Set、Map這個(gè)三個(gè)接口,對(duì)內(nèi)容歸納下,以便后續(xù)有新的知識(shí)點(diǎn)擴(kuò)張也好分清界限。
1、List主要實(shí)現(xiàn):
線程不安全:
1)ArrayList:基于數(shù)組實(shí)現(xiàn)。
2)LinkedList:基于鏈表實(shí)現(xiàn)。
線程安全:
1)Vector:基于數(shù)組實(shí)現(xiàn),安全基于同步鎖實(shí)現(xiàn)
2)SynchronizedList:這個(gè)是Collections生成的內(nèi)部類(lèi),其實(shí)就是封裝了一層,用的同步鎖。
3)CopyOnWriteArrayList:基于數(shù)組實(shí)現(xiàn),安全基于ReentrantLock實(shí)現(xiàn),add操作效率極差,沒(méi)有擴(kuò)容機(jī)制。

2、Set主要實(shí)現(xiàn):
線程不安全:
1)HashSet:基于HashMap實(shí)現(xiàn),用來(lái)去重。
2)TreeSet:基于TreeMap實(shí)現(xiàn),用來(lái)去重加排序。
3)WeakHashMap:基于數(shù)組+鏈表,鏈表是WeakReference的子類(lèi),沒(méi)用過(guò),這一般也用的很少,使用場(chǎng)景也特殊,用來(lái)實(shí)現(xiàn)弱引用以便垃圾回收。
線程安全:
1)SynchronizedSet:這個(gè)是Collections生成的內(nèi)部類(lèi),其實(shí)就是封裝了一層,用的同步鎖。
2)CopyOnWriteArraySet:基于CopyOnWriteArrayList實(shí)現(xiàn),安全基于ReentrantLock實(shí)現(xiàn)。
3)ConcurrentSkipListSet:基于ConcurrentSkipListMap,安全基于CAS 。

3、Map主要實(shí)現(xiàn)
線程不安全:
1)HashMap:基于數(shù)組+鏈表+紅黑樹(shù)實(shí)現(xiàn)。
2)TreeMap:基于紅黑樹(shù)實(shí)現(xiàn),用于有序。
線程安全:
1)HashTable:基于數(shù)組+鏈表,安全基于同步鎖,性能差。
2)ConcurrentHashMap:基于數(shù)組+鏈表+紅黑樹(shù)實(shí)現(xiàn),安全基于同步鎖+CAS。
3)ConcurrentSkipListMap:基于鏈表實(shí)現(xiàn),用于有序,有序基于跳表實(shí)現(xiàn),安全基于CAS。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容