Java集合類學(xué)習(xí)總結(jié)

? ?1.Collection接口是最基本的接口? 一個(gè)Collection代表一組Object,Collection派生的兩個(gè)接口Set和List

? 2.List是有序的Collection,能夠精確的控制每個(gè)元素的插入位置。使用下標(biāo)訪問每個(gè)元素,List允許有相同的元素

? 3.LinkedList實(shí)現(xiàn)了List接口,允許null元素,LinkedList可用作堆棧(stack),隊(duì)列(queue),或雙向隊(duì)列(deque),LinkedList沒有同步方法,多線程同時(shí)訪問List,必須實(shí)現(xiàn)訪問同步,一個(gè)解決辦法是:

? List list = Collections.synchronizedList(new LinkedList());

? 4.ArrayList實(shí)現(xiàn)了可變大小的數(shù)組,允許所有元素,包括null,一個(gè)ArrayList實(shí)例有一個(gè)容量(Capacity),非同步的

? 5.Vector和ArrayList很像,區(qū)別Vector是線程同步的

? 6.Stack繼承自Vector,實(shí)現(xiàn)一個(gè)先進(jìn)后出的堆棧。Stack剛創(chuàng)建的時(shí)候是空的

? 7.Set接口是不包含重復(fù)元素的Collection,最多允許有個(gè)null元素

? 8.Map沒有繼承Collection接口,是一組key-value映射

? 9.HashTable繼承Map接口,實(shí)現(xiàn)一個(gè)key-value映射的hash表,任何非空的對(duì)象都可作為key或value,線程同步

? 作為key的對(duì)象通過計(jì)算散列函數(shù)來確定與其對(duì)應(yīng)的value的位置,任何作為key的對(duì)象都必須實(shí)現(xiàn)hashCode()和equals()方法,注意兩個(gè)不同對(duì)象的hashcode可能相同

? 10.HashMap和HashTable類似,但HashMap是非同步的,并且允許為null

? 11.WeakHashMap是一種改進(jìn)的HashMap,對(duì)key實(shí)行“弱引用”,如果一個(gè)key不再被外部引用,該key可以被GC回收。

? 注:

? ? 如果涉及到堆棧,隊(duì)列等操作,要考慮使用List,需要快速的插入和刪除元素的使用LinkedList,需要快速隨機(jī)訪問,使用ArrayList

? ? 對(duì)hash表的操作,作為key的對(duì)象要正確重寫equals和hashCode方法

? ? 盡量返回接口而非實(shí)際的類型

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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