JAVA編程思想(第四版)學(xué)習(xí)筆記----11.10 Map
之前學(xué)習(xí)的是Collection層次的List接口。List層次比較簡單,除去與多線程安全相關(guān)的CoppyOnWriteArrayList<T>類,這一個類在集中涉及多線程相關(guān)知識時候再學(xué)習(xí),以及已經(jīng)過時的向量Vector<T>、棧Stack<T>外,只剩下兩種比較常用的List接口的實(shí)現(xiàn),也就是基于數(shù)組的ArrayList和基于鏈表的Linkedlist兩個類。這兩個列表實(shí)現(xiàn)中最簡單、最常用的還是ArrayList。至于LinkedList,由于其具體實(shí)現(xiàn)中實(shí)現(xiàn)了Deque隊列接口,在功能上具有比列表更多的功能,所以在學(xué)習(xí)完隊列之后再學(xué)習(xí)Linkedlist應(yīng)該是比較合理的。
在平時的開發(fā)中由于隊列用到的比較少,所以關(guān)于隊列的學(xué)習(xí)也放置在后面。Collection中的另外一個常用的容器是Set接口的相關(guān)實(shí)現(xiàn)類。又由于java在設(shè)計Set實(shí)現(xiàn)類時是基于Map進(jìn)行實(shí)現(xiàn)的,也就是說沒有Map就沒有Set,故而接下來先學(xué)習(xí)Map,然后再學(xué)習(xí)Set,這個學(xué)習(xí)順序應(yīng)該是比較合理的。
下面先放上一張Map接口的相關(guān)層次結(jié)構(gòu)圖(相關(guān)資源來自網(wǎng)絡(luò)):
Map接口中最常用到的實(shí)現(xiàn)類有HashMap(無序,快速訪問元素)、LinkedHashMap(按照添加順序排序,快速訪問)、TreeMap(按照鍵的比較升序排列)
接口Map<K,V>
public interface Map<K,V>
Map<K,V>接口是Map層次的根接口,與Collection<T>接口不同的是,該接口是真正的根接口,并沒有拓展自其他的接口。
Map提供將鍵映射到值的對象,一個映射不能包括重復(fù)的鍵;每個鍵最多只能映射到一個值(但是值的類型可以為單值類型比如String,也可以為多值類型比如List)。Map接口提供三種collection視圖,允許以鍵集,值集,或鍵值對映射關(guān)系集的形式對某個映射進(jìn)行查看。映射順序定義為迭代器在映射的collection視圖上返回其元素的順序。某些映射實(shí)現(xiàn)可明確保證其順序,如 TreeMap、LinkedHashMap 類;另一些映射實(shí)現(xiàn)則不保證順序,如HashMap 類。
某些映射實(shí)現(xiàn)對可能包含的鍵和值有所限制。例如,某些實(shí)現(xiàn)禁止 null 鍵和值,另一些則對其鍵的類型有限制。
抽象類AbstractMap<K,V>
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26