容器主要包括 Collection 和 Map 兩種怎栽,Collection 存儲(chǔ)著對(duì)象的集合殿雪,而 Map 存儲(chǔ)著鍵值對(duì)(兩個(gè)對(duì)象)的映射表邮破。
Collection
1. Set
TreeSet:基于紅黑樹(shù)實(shí)現(xiàn)邻吞,支持有序性操作爹橱,例如根據(jù)一個(gè)范圍查找元素的操作萨螺。但是查找效率不如 HashSet,HashSet 查找的時(shí)間復(fù)雜度為 O(1)愧驱,TreeSet 則為 O(logN)慰技。
HashSet:基于哈希表實(shí)現(xiàn),支持快速查找组砚,但不支持有序性操作吻商。并且失去了元素的插入順序信息,也就是說(shuō)使用 Iterator 遍歷 HashSet 得到的結(jié)果是不確定的糟红。
LinkedHashSet:具有 HashSet 的查找效率艾帐,且內(nèi)部使用雙向鏈表維護(hù)元素的插入順序。
2. List
ArrayList:基于動(dòng)態(tài)數(shù)組實(shí)現(xiàn)盆偿,支持隨機(jī)訪問(wèn)柒爸。
Vector:和 ArrayList 類似,但它是線程安全的事扭。
LinkedList:基于雙向鏈表實(shí)現(xiàn)捎稚,只能順序訪問(wèn),但是可以快速地在鏈表中間插入和刪除元素。不僅如此今野,LinkedList 還可以用作棧葡公、隊(duì)列和雙向隊(duì)列。
3. Queue
LinkedList:可以用它來(lái)實(shí)現(xiàn)雙向隊(duì)列条霜。
PriorityQueue:基于堆結(jié)構(gòu)實(shí)現(xiàn)催什,可以用它來(lái)實(shí)現(xiàn)優(yōu)先隊(duì)列。
Map
TreeMap:基于紅黑樹(shù)實(shí)現(xiàn)宰睡。
HashMap:基于哈希表實(shí)現(xiàn)蒲凶。
HashTable:和 HashMap 類似,但它是線程安全的拆内,這意味著同一時(shí)刻多個(gè)線程可以同時(shí)寫入 HashTable 并且不會(huì)導(dǎo)致數(shù)據(jù)不一致豹爹。它是遺留類,不應(yīng)該去使用它∶疲現(xiàn)在可以使用 ConcurrentHashMap 來(lái)支持線程安全,并且 ConcurrentHashMap 的效率會(huì)更高光稼,因?yàn)?ConcurrentHashMap 引入了分段鎖或南。
LinkedHashMap:使用雙向鏈表來(lái)維護(hù)元素的順序,順序?yàn)椴迦腠樞蚧蛘咦罱钌偈褂茫↙RU)順序艾君。