
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
- A:TreeSet樹集,和散列集HashSet有點類似,但是它對散列集進行了改進,其中的元素是有序的,以任意順序插入,但遍歷時元素將按照某種順序排列;每次插入一個元素時都會將其放入恰當?shù)奈恢?,(采用了?shù)據(jù)結構中的紅黑樹對集合進行排序)其中也不能有重復元素;
- <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;