Java復習筆記第二篇----集合學習之上篇

image

1:Iterable:

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

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

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

  • <1>:hashSet:是一個基于散列表的集合:它里面的元素在遍歷時,依次訪問所有的桶,由于散列將元素分配在表中的各個位置,所以訪問的順序時隨機的;只有當我們不關心遍歷的順序時才使用它;
  • <2>:SortedSet:也是一個泛型接口:擁有Set的所有特性;
    • A:TreeSet樹集,和散列集HashSet有點類似,但是它對散列集進行了改進,其中的元素是有序的,以任意順序插入,但遍歷時元素將按照某種順序排列;每次插入一個元素時都會將其放入恰當?shù)奈恢?,(采用了?shù)據(jù)結構中的紅黑樹對集合進行排序)其中也不能有重復元素;
      和HashSet比起來,插入元素時慢,但比數(shù)組和鏈表插入元素時快;當我們關心遍歷時元素出現(xiàn)的順序時,我們就使用TreeSet;當我們不關心元素遍歷的順序時就使用hashSet
  • <3>:EnumSet:是一個枚舉類型元素集的高效實現(xiàn)。由于枚舉類型只有有限個實例;所以EnumSet內(nèi)部用位序列實現(xiàn);如果對應的值在集合中,則相應的位被值為1;EnumSet類沒有公共的構造器;可以使用靜態(tài)工廠方法構造這個集合;可以使用Set接口常用的方法來修改EnumSet;

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

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

  • <1>PriorityQuene:優(yōu)先級隊列:可以按任意順序插入,但檢索時總是按照順序檢索,無論什么時候調用Remove方法,總會刪除隊列中的最小的元素;采用一種叫做堆的數(shù)據(jù)結構,堆是以中可以自我調整的二叉樹,可以將最小的元素移動到根;
    和TreeSet中的迭代不同;優(yōu)先級隊列不是按照元素的排列的順序訪問的。而刪除卻總是刪掉剩余元素中優(yōu)先級數(shù)最小的那個元素;

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

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

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

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

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

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

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