List , Set, Map都是接口,前兩個(gè)繼承至collection接口继阻,Map為獨(dú)立接口
Set下有HashSet,LinkedHashSet废酷,TreeSet
List下有ArrayList瘟檩,Vector,LinkedList
Map下有Hashtable澈蟆,LinkedHashMap墨辛,HashMap,TreeMap
collection接口下還有個(gè)Queue接口趴俘,有PriorityQueue類
注意:
Queue接口與List睹簇、Set同一級別奏赘,都是繼承了collection接口。
看圖你會(huì)發(fā)現(xiàn),LinkedList既可以實(shí)現(xiàn)Queue接口,也可以實(shí)現(xiàn)List接口.只不過呢, LinkedList實(shí)現(xiàn)了Queue接口太惠。Queue接口窄化了對LinkedList的方法的訪問權(quán)限(即在方法中的參數(shù)類型如果是Queue時(shí)志珍,就完全只能訪問Queue接口所定義的方法 了,而不能直接訪問 LinkedList的非Queue的方法)垛叨,以使得只有恰當(dāng)?shù)姆椒ú趴梢允褂谩?/p>
SortedSet是個(gè)接口伦糯,它里面的(只有TreeSet這一個(gè)實(shí)現(xiàn)可用)中的元素一定是有序的。
總結(jié):
connection接口(注意首字母小寫):
— List 有序,可重復(fù)
ArrayList
優(yōu)點(diǎn): 底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組嗽元,查詢快敛纲,增刪慢。
缺點(diǎn): 線程不安全剂癌,效率高
Vector
優(yōu)點(diǎn): 底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組淤翔,查詢快,增刪慢佩谷。
缺點(diǎn): 線程安全旁壮,效率低
LinkedList
優(yōu)點(diǎn): 底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢谐檀,增刪快抡谐。
缺點(diǎn): 線程不安全,效率高
—Set 無序,唯一
HashSet
底層數(shù)據(jù)結(jié)構(gòu)是哈希表桐猬。(無序,唯一)
如何來保證元素唯一性?
1.依賴兩個(gè)方法:hashCode()和equals()
LinkedHashSet
底層數(shù)據(jù)結(jié)構(gòu)是鏈表和哈希表麦撵。(FIFO插入有序,唯一)
1.由鏈表保證元素有序
2.由哈希表保證元素唯一
TreeSet
底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹。(唯一溃肪,有序)
1. 如何保證元素排序的呢?
自然排序
比較器排序
2.如何保證元素唯一性的呢?
根據(jù)比較的返回值是否是0來決定
針對collection集合我們到底使用誰呢?(掌握)
唯一嗎?
是:Set
排序嗎?
是:TreeSet或LinkedHashSet
否:HashSet
如果你知道是Set免胃,但是不知道是哪個(gè)Set,就用HashSet惫撰。
否:List
要安全嗎?
是:Vector
否:ArrayList或者LinkedList
查詢多:ArrayList
增刪多:LinkedList
如果你知道是List羔沙,但是不知道是哪個(gè)List,就用ArrayList厨钻。
如果你知道是collection集合扼雏,但是不知道使用誰,就用ArrayList莉撇。
如果你知道用集合呢蛤,就用ArrayList惶傻。
說完了collection,來簡單說一下Map.