嘮嘮SE的集合-09——Map接口

9. Map

將鍵映射到值的對象,一個映射不能包含重複的鍵,但值能夠重複每一個鍵最多隻能映射到一個值java

Map是雙列的;Collection是單列數據結構

Map的鍵惟一;Collection的子體系Set是惟一的spa

Map集合的數據結構只針對鍵有效,跟值無關;Collection集合的數據結構是針對元素有效code

 

一、添加:

一、V put(K key, V value) (能夠相同的key值,可是添加的value值會覆蓋前面的,返回值是前一個,若是沒有就返回null)對象

二、putAll(Map<? extends K, ? extends V> m) 從指定映射中將全部映射關係複製到此映射中(可選操做)。rem

import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        Map<String, Integer> map2 = new HashMap<>();
        map2.putAll(map);
    }
}

二、刪除

一、remove() 刪除關聯對象,指定key對象get

二、clear() 清空集合對象源碼

import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        System.out.println(map.size()); // 3
        map.remove("胖虎");
        System.out.println(map.size()); // 2
        map.remove("胖虎");
        System.out.println(map.size()); // 2
        map.clear();
        System.out.println(map.size()); // 0
    }
}

三、獲取

value get(key); 能夠用於判斷鍵是否存在的狀況。當指定的鍵不存在的時候,返回的是null。it

import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        
        Integer num1 = map.get("胖虎");
        Integer num2 = map.get("靜香");
        System.out.println(num1); // 10
        System.out.println(num2); // null
    }
}

四、判斷:

一、boolean isEmpty() 長度爲0返回true不然falseio

二、boolean containsKey(Object key) 判斷集合中是否包含指定的key

三、boolean containsValue(Object value) 判斷集合中是否包含指定的value

import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        
        System.out.println(map.containsKey("胖虎")); // true
        System.out.println(map.containsValue("0")); // false
        System.out.println(map.containsValue(0)); // true
    }
}

五、長度:

int size() (前面已經有過了。。。)

 

迭代Map的方式:

1)使用Map.Entry<K, V> 與Map中的entrySet方法配合使用;2)加強for循環

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        
        //Iterator遍歷
        Set<Map.Entry<String, Integer>> set = map.entrySet();
        Iterator<Map.Entry<String, Integer>> iterator = set.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Integer> entry = iterator.next();
            System.out.println(entry.getKey() + "的成績是:" + entry.getValue());
        }
        
        //加強for循環遍歷
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "的成績是:" + entry.getValue());
        }
    }
}

不要忘記!不能在for循環裏進行增刪操做!

 

-------------------HashMap與TreeMap-----------------------

對於K來說與Set對應的部分徹底一致,故再也不贅述。

不過對於HashMap來說,這是個蠻深奧的東西,我會另起一篇,深扒源碼!

相關文章
相關標籤/搜索