Map中的遍歷方法及基礎方法

首先

一、Map結構的理解:

Map中的key:無序的、不可重複的,使用Set存儲所有的key
Map中的value:無序的、可重複的,使用Collection存儲所有的value
  一個鍵值對:key-value構成了一個Entry對象。 Map中的entry:無序的、不可重複的,使用Set存儲所有的entry

 

二、Map遍歷的操作方法:


Set keySet():返回所有key構成的Set集合
Collection values():返回所有value構成的Collection集合
Set entrySet():返回所有key-value對構成的Set集合

 

    @Test
    public void test5(){
        Map map = new HashMap();
        map.put("AA",123);
        map.put(45,1234);
        map.put("BB",56);

       

 //遍歷所有的key集:keySet()
        Set set = map.keySet();
            Iterator iterator = set.iterator();
            while(iterator.hasNext()){
                System.out.println(iterator.next());
        }
        System.out.println();
       

 //遍歷所有的value集:values()
        Collection values = map.values();
        for(Object obj : values){
            System.out.println(obj);
        }
        System.out.println();
       


 //遍歷所有的key-value
        //方式一:entrySet()
        Set entrySet = map.entrySet();
        Iterator iterator1 = entrySet.iterator();
        while (iterator1.hasNext()){
            Object obj = iterator1.next();
            //entrySet集合中的元素都是entry
            Map.Entry entry = (Map.Entry) obj;
            System.out.println(entry.getKey() + "---->" + entry.getValue());

        }
        System.out.println();
        //方式二:
        Set keySet = map.keySet();
        Iterator iterator2 = keySet.iterator();
        while(iterator2.hasNext()){
            Object key = iterator2.next();
            Object value = map.get(key);
            System.out.println(key + "=====" + value);

        }

    }

 

三,Map中的基礎方法增刪改查: 

 

添加、刪除、修改操作:
Object put(Object key,Object value):將指定key-value添加到(或修改)當前map對象中
void putAll(Map m):將m中的所有key-value對存放到當前map中
Object remove(Object key):移除指定key的key-value對,並返回value
void clear():清空當前map中的所有數據

  @Test
    public void test3(){
        Map map = new HashMap();
        //添加
        map.put("AA",123);
        map.put(45,123);
        map.put("BB",56);
        //修改
        map.put("AA",87);

        System.out.println(map);

        Map map1 = new HashMap();
        map1.put("CC",123);
        map1.put("DD",123);

        map.putAll(map1);

        System.out.println(map);

        //remove(Object key)
        Object value = map.remove("CC");
        System.out.println(value);
        System.out.println(map);

        //clear()
        map.clear();//與map = null操作不同
        System.out.println(map.size());
        System.out.println(map);
    }


元素查詢的操作:
Object get(Object key):獲取指定key對應的value
boolean containsKey(Object key):是否包含指定的key
boolean containsValue(Object value):是否包含指定的value
int size():返回map中key-value對的個數
boolean isEmpty():判斷當前map是否爲空
boolean equals(Object obj):判斷當前map和參數對象obj是否相等

 @Test
    public void test4(){
        Map map = new HashMap();
        map.put("AA",123);
        map.put(45,123);
        map.put("BB",56);
        // Object get(Object key)
        System.out.println(map.get(45));
        //containsKey(Object key)
        boolean isExist = map.containsKey("BB");
        System.out.println(isExist);

        isExist = map.containsValue(123);
        System.out.println(isExist);

        map.clear();

        System.out.println(map.isEmpty());

    }


四、Map的實現類的結構:

 


*  |----Map:雙列數據,存儲key-value對的數據   ---類似於高中的函數:y = f(x)
*         |----HashMap:作爲Map的主要實現類;線程不安全的,效率高;存儲null的key和value
*              |----LinkedHashMap:保證在遍歷map元素時,可以按照添加的順序實現遍歷。
*                      原因:在原有的HashMap底層結構基礎上,添加了一對指針,指向前一個和後一個元素。
*                      對於頻繁的遍歷操作,此類執行效率高於HashMap。
*         |----TreeMap:保證按照添加的key-value對進行排序,實現排序遍歷。此時考慮key的自然排序或定製排序
*                      底層使用紅黑樹
*         |----Hashtable:作爲古老的實現類;線程安全的,效率低;不能存儲null的key和value
*              |----Properties:常用來處理配置文件。key和value都是String類型

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章