java中的各種集合-上篇

1:Iterable:

它是一個泛型接口這個接口中僅僅有一個方法,iterator獲得一個迭代器

2:Collection頂級集合類其中包含了各種操作集合的方法,同樣也是一個泛型接口

3:set集合:也是一個泛型接口,它以及他的孩子中不允許有重復(fù)的元素,集合內(nèi)部元素沒有順序

? ? ?<1>:hashSet:是一個基于散列表的集合:它里面的元素在遍歷時,依次訪問所有的桶,由于散列將元素分配在表中的各個位置,所以訪問的順序時隨機(jī)的;只有當(dāng)我們不關(guān)心遍歷的順序時才使用它;

? ? ?<2>:SortedSet:也是一個泛型接口:擁有Set的所有特性;

? ? ? ? ? A:TreeSet樹集,和散列集HashSet有點類似,但是它對散列集進(jìn)行了改進(jìn),其中的元素是有序的,以任意順序插入,但遍歷時元素將按照某種順序排列;每次插入一個元素時都會將其放入恰當(dāng)?shù)奈恢?,(采用了?shù)據(jù)結(jié)構(gòu)中的紅黑樹對集合進(jìn)行排序)其中也不能有重復(fù)元素;

? ? ? ? ? 和HashSet比起來,插入元素時慢,但比數(shù)組和鏈表插入元素時塊;當(dāng)我們關(guān)心遍歷時元素出現(xiàn)的順序時,我們就使用TreeSet;當(dāng)我們不關(guān)心元素遍歷的順序時就使用hashSet

? ? <3>:EnumSet是一個枚舉類型元素集的高效實現(xiàn)。由于枚舉類型只有有限個實例;所以EnumSet內(nèi)部用位序列實現(xiàn);如果對應(yīng)的值在集合中,則相應(yīng)的位被值為1;EnumSet類沒有公共的構(gòu)造器;可以使用靜態(tài)工廠方法構(gòu)造這個集合;可以使用Set接口常用的方法來修改EnumSet;

Ps:Objects是一個被final修飾的類;其中的方法都是靜態(tài)的方法

4:Deque是javaSe1.6引入的他是一個接口,是由ArrayQuene和LinkedList去實現(xiàn)的;這兩個類都提供了雙端隊列,必要時可以改變隊列的長度;

? ? <1>PriorityQuene:優(yōu)先級隊列:可以按任意順序插入,但檢索時總是按照順序檢索,無論什么時候調(diào)用Remove方法,總會刪除隊列中的最小的元素;采用一種叫做堆的數(shù)據(jù)結(jié)構(gòu),堆是以中可以自我調(diào)整的二叉樹,可以將最小的元素移動到根;

? ? ? ? 和TreeSet中的迭代不同;優(yōu)先級隊列不是按照元素的排列的順序訪問的。而刪除卻總是刪掉剩余元素中優(yōu)先級數(shù)最小的那個元素;

5:List:是一個集合接口:它里面的元素也不允許重復(fù),用于描述一個有序的集合;集合中的元素位置十分重要;

<1>:LinkedList:同時也實現(xiàn)了Quene接口,是一種鏈?zhǔn)酱鎯涌?,向集合中插入元素時效率較高,但遍歷查找元素時的效率較低;鏈表不支持隨機(jī)訪問,如果要查尋鏈表中第n個元素,必須從頭開始;它的get(index)方法也是一樣從頭開始;

注釋:Get方法做了微小的優(yōu)化;如果索引大于size()/2就從列表尾開始搜索元素;

<2>:ArrayList:數(shù)組列表,相對于數(shù)組而言它的空間必須要提前確定,可以動態(tài)的擴(kuò)展空間;隨機(jī)查詢一個元素比較快,但是刪除和插入指定元素的尤其是中間位置的效率較低;需要頻繁移動元素;

<3>:Vactor這是一個已經(jīng)被遺棄的集合:可以讓兩個線程安全的訪問一個對象;但是如果由一個線程訪問對象時,vactor將會在同步操作上花費大量的時間;而ArrayList方法是不同步的,因此建議在不需要同步時使用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ù)。

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,623評論 18 399
  • 上一篇文章介紹了Set集合的通用知識。Set集合中包含了三個比較重要的實現(xiàn)類:HashSet、TreeSet和En...
    Ruheng閱讀 16,124評論 3 57
  • 以下是《瘋狂Java講義》中的一些知識,如有錯誤,煩請指正。 集合概述 Java集合可以分為Set、List、Ma...
    hainingwyx閱讀 647評論 0 1
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,644評論 0 3
  • 面向?qū)ο笾饕槍γ嫦蜻^程。 面向過程的基本單元是函數(shù)。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,217評論 0 4

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