1. 程式人生 > 程式設計 >Matplotlib.pyplot 三維繪圖的實現示例

Matplotlib.pyplot 三維繪圖的實現示例

Map介面

儲存雙列資料,儲存key-value對的資料,類似於函式y = f(x)

Map介面繼承樹

實現類

  • Map
    • HashMap
      • LinkedHashMap
    • TreeMap
    • Hashtable
      • Properties

說明

  1. HashMap:作為Map的主要實現類,執行緒不安全,效率高,可以儲存null的key和value

  2. LinkedHashMap:保證在遍歷map元素時,可以按照新增的順序實現遍歷。對於頻繁的遍歷操作,此類的執行效率高於HashMap

    原因:在原有的HashMap底層結構的基礎上,添加了一對指標,指向前一個和後一個元素

  3. TreeMap:保證按照新增的key-value對進行排序,實現排序遍歷,此時考慮key的自然排序或定製排序(底層使用紅黑樹)

  4. Hashtable:作為古老的實現類,執行緒安全,效率低,不可以儲存null的key和value

  5. 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中常用的方法

  1. 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);
    

  2. 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}
    
  3. 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}
    
  4. clear()

    清空當前map中所有的資料,與map = null 操作不同

    資料清理掉,物件依舊存在

    此時map的長度為0

    map.clear();
    System.out.println(map);//{}
    
  5. 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
    
  6. containKey(Object key)

    是否包含指定的key

    System.out.println(map.containsKey("AA"));//true
    
  7. containValue(Object value)

    是否包含指定的value

    如果map中有多個相同的value,只要找到第一個,就會返回true

    System.out.println(map.containsValue(123));//true
    
  8. size()

    返回map中key-value對的個數

    System.out.println(map.size());//4
    
  9. isEmpty()

    判斷當前map是否為空

    System.out.println(map.isEmpty());//false
    
  10. 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
    
  11. 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());
    }
    
  12. values()

    遍歷所有的value集

    Collection values = map.values();
    Iterator iterator1 = values.iterator();
    while (iterator1.hasNext()){
        System.out.println(iterator1.next());
    }
    //123
    //79
    //56
    //123
    
  13. entrySet()

    遍歷所有的key-value

    entrySet集合中的元素都是entry

    Set set1 = map.entrySet();
    Iterator iterator2 = set1.iterator();
    while (iterator2.hasNext()){
        System.out.println(iterator2.next());
    }
    

總結

  1. 新增:put(Object key , Object value)
  2. 刪除:remove(Object key)
  3. 修改:put(Object key , Object value)
  4. 查詢:get(Object obj)
  5. 長度:size()
  6. 遍歷:keySet()/values()/entrySet()