java集合關(guān)系圖

java集合關(guān)系圖


1.Iterator接口

Iterator接口,這是一個用于遍歷集合中元素的接口,主要包含hashNext(),next(),remove()三種方法。它的一個子接口LinkedIterator在它的基礎(chǔ)上又添加了三種方法,分別是add(),previous(),hasPrevious()。也就是說如果是先Iterator接口,那么在遍歷集合中元素的時候,只能往后遍歷,被遍歷后的元素不會在遍歷到,通常無序集合實現(xiàn)的都是這個接口,比如HashSet,HashMap;而那些元素有序的集合,實現(xiàn)的一般都是LinkedIterator接口,實現(xiàn)這個接口的集合可以雙向遍歷,既可以通過next()訪問下一個元素,又可以通過previous()訪問前一個元素,比如ArrayList。


2、Collection (集合的最大接口)繼承關(guān)系

  ——List 可以存放重復(fù)的內(nèi)容

  ——Set  不能存放重復(fù)的內(nèi)容,所以的重復(fù)內(nèi)容靠hashCode()和equals()兩個方法區(qū)分

  ——Queue  隊列接口

  ——SortedSet  可以對集合中的數(shù)據(jù)進(jìn)行排序

  Collection定義了集合框架的共性功能。


3.List

list


4.總結(jié):

  List:add/remove/get/set。

    1,ArrayList:其實就是數(shù)組,容量一大,頻繁增刪就是噩夢,適合隨機查找;

    2,LinkedList:增加了push/[pop|remove|pull],其實都是removeFirst;

    3,Vector:歷史遺留產(chǎn)物,同步版的ArrayList,代碼和ArrayList太像;

    4,Stack:繼承自Vector。Java里其實沒有純粹的Stack,可以自己實現(xiàn),用組合的方式,封裝一下LinkedList即可;

    5,Queue:本來是單獨的一類,不過在SUN的JDK里就是用LinkedList來提供這個功能的,主要方法是offer/pull/peek

  Set:add/remove??梢杂玫骰蛘咿D(zhuǎn)換成list。

    1,HashSet:內(nèi)部采用HashMap實現(xiàn)的;

    2,LinkedHashSet:采用LinkedHashMap實現(xiàn);

    3,TreeSet:TreeMap。

  Map:put/get/remove。

    1,HashMap/HashTable:散列表,和ArrayList一樣采用數(shù)組實現(xiàn),超過初始容量會對性能有損耗;

    2,LinkedHashMap:繼承自HashMap,但通過重寫嵌套類HashMap.Entry實現(xiàn)了鏈表結(jié)構(gòu),同樣有容量的問題;

    3,Properties:是繼承的HashTable。

    順便說一下Arrays.asList,這個方法的實現(xiàn)依賴一個嵌套類,這個嵌套類也叫ArrayList

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

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