使用特定容器時(shí)應(yīng)該 使用接口變量,保留其實(shí)際的對(duì)象實(shí)現(xiàn)類型
Collection接口
- add方法
- iterator方法
返回迭代器
迭代器
實(shí)現(xiàn)
list
- linkedlist 數(shù)組中間刪除或增加元素代價(jià)小
- linkedlist 不支持隨機(jī)訪問,僅支持迭代器訪問,ArrayList隨機(jī)訪問支持良好
- Vector默認(rèn)同步執(zhí)行所有方法, ArrayList需額外同步線程
Set
hash 實(shí)現(xiàn)set,根據(jù)元素的hash code放在不同的bucket里,bucket為鏈表(相比完美hash,用鏈表解決沖突)
元素需要實(shí)現(xiàn)hashcode接口tree實(shí)現(xiàn)set, 元素放入平衡二叉樹,有序,查找時(shí)間為logm,慢于hash
元素需要實(shí)現(xiàn)Comparable接口
隊(duì)列
- 雙端隊(duì)列
- 優(yōu)先級(jí)隊(duì)列,內(nèi)部為堆形式實(shí)現(xiàn)
元素需要實(shí)現(xiàn)Comparable接口
map
- key作為set元素,同樣分為hash和tree實(shí)現(xiàn),關(guān)聯(lián)value
- 提供的集合視圖
- KeySet()返回key集,只是set接口
- Values()返回value集合
- entrySet()返回kv對(duì)集合
記住get/put順序的set/MAP
- 額外的將元素linked,以記住其get/put順序
- linkedHashMap按訪問順序排序key,可以實(shí)現(xiàn)最多訪問駐留有限容量
視圖
某個(gè)集合接口對(duì)象的淺包裝