Matplotlib.pyplot 三維繪圖的實現示例
Map介面
儲存雙列資料,儲存key-value對的資料,類似於函式y = f(x)
Map介面繼承樹
實現類
- Map
- HashMap
- LinkedHashMap
- TreeMap
- Hashtable
- Properties
- HashMap
說明
-
HashMap:作為Map的主要實現類,執行緒不安全,效率高,可以儲存null的key和value
-
LinkedHashMap:保證在遍歷map元素時,可以按照新增的順序實現遍歷。對於頻繁的遍歷操作,此類的執行效率高於HashMap
原因:在原有的HashMap底層結構的基礎上,添加了一對指標,指向前一個和後一個元素
-
TreeMap:保證按照新增的key-value對進行排序,實現排序遍歷,此時考慮key的自然排序或定製排序(底層使用紅黑樹)
-
Hashtable:作為古老的實現類,執行緒安全,效率低,不可以儲存null的key和value
-
Properties:常用來處理配置檔案。key和value都是String型別
HashMap底層
- jdk7:陣列 + 連結串列
- jdk8:陣列 + 連結串列 + 紅黑樹
Map結構的理解
-
key:無序的,不可重複的,使用Set儲存所有的key
在HashMap中,要求key所在的類要重寫equals()和hashCode()
-
value:無序的,可重複的
value所在類要求重寫equals()
-
Entry:一個鍵值對(key - value)構成一個entry物件,key和value相當於兩個屬性
無序的,不可重複的,使用Set儲存所有的entry
Map中常用的方法
-
put(Object key , Object value)
將指定的key-value新增到(或修改)當前map物件中
HashMap map = new HashMap(); //新增操作 map.put("AA",123); map.put("BB",79); map.put("CC",56); map.put("DD",123); //修改操作 map.put("AA",87);//現有的key相同,就要替換原key中的值為新的value值 System.out.println(map);
-
putAll(Map m)
將m中所有的key-value對存放在當前的map中
HashMap m = new HashMap(); map.put("Ann",90); map.put("Jack",80); map.put("Lisa",70); map.putAll(m); System.out.println(map);//{AA=87, BB=79, CC=56, DD=123, Ann=90, Jack=80, Lisa=70}
-
remove(Object key)
移除指定key的key-value對,並返回value
System.out.println(map.remove("Ann"));//90 System.out.println(map);//{AA=87, BB=79, CC=56, DD=123, Jack=80, Lisa=70}
-
clear()
清空當前map中所有的資料,與map = null 操作不同
資料清理掉,物件依舊存在
此時map的長度為0
map.clear(); System.out.println(map);//{}
-
get(Object key)
獲取指定key對應的value
HashMap map = new HashMap(); map.put("AA",123); map.put("BB",79); map.put("CC",56); map.put("DD",123); System.out.println(map.get("AA"));//123
-
containKey(Object key)
是否包含指定的key
System.out.println(map.containsKey("AA"));//true
-
containValue(Object value)
是否包含指定的value
如果map中有多個相同的value,只要找到第一個,就會返回true
System.out.println(map.containsValue(123));//true
-
size()
返回map中key-value對的個數
System.out.println(map.size());//4
-
isEmpty()
判斷當前map是否為空
System.out.println(map.isEmpty());//false
-
equals(Object obj)
判斷當前map和引數物件obj是否相等
HashMap map1 = new HashMap(); map1.put("AA",123); map1.put("BB",79); map1.put("CC",56); map1.put("DD",123); System.out.println(map.equals(map1));//true
-
keySet()
返回所有的key構成的Set集合
HashMap map = new HashMap(); map.put("AA",123); map.put("BB",79); map.put("CC",56); map.put("DD",123); System.out.println(map.keySet());//[AA, BB, CC, DD] Set set = map.keySet(); Iterator iterator = set.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); }
-
values()
遍歷所有的value集
Collection values = map.values(); Iterator iterator1 = values.iterator(); while (iterator1.hasNext()){ System.out.println(iterator1.next()); } //123 //79 //56 //123
-
entrySet()
遍歷所有的key-value
entrySet集合中的元素都是entry
Set set1 = map.entrySet(); Iterator iterator2 = set1.iterator(); while (iterator2.hasNext()){ System.out.println(iterator2.next()); }
總結
- 新增:put(Object key , Object value)
- 刪除:remove(Object key)
- 修改:put(Object key , Object value)
- 查詢:get(Object obj)
- 長度:size()
- 遍歷:keySet()/values()/entrySet()