Map集合的特点:

    1. Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) ;

    2. Map集合中的元素,key和value的数据类型可以相同,也可以不同 ;

    3. Map集合中的元素,key是不允许重复的,value是可以重复的 ;

    4. Map集合中的元素,key和value是一一对应的 ;

 

java.util.HashMap<k,v>集合 implement Map<k,v>接口

HashMap集合的特点:

    1. HashMap集合底层是哈希表:查询的速度特别快

    JDK1.8之前:数组+单项列表
    JDK1.8之后:数组+单项列表/红黑树(链表的长度超过8):提高查询的速度
    2. HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致

    java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
LinkedHashMap集合的特点:

        1. LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)

        2. LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的

 

实例:

定义一个类:
package JiHe.MapJiHe;
 
import java.util.HashMap;
import java.util.Map;
 
/*
    java.util.Map<k,v>集合
    Map集合的特点:
        1. Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
        2. Map集合中的元素,key和value的数据类型可以相同,也可以不同
        3. Map集合中的元素,key是不允许重复的,value是可以重复的
        4. Map集合中的元素,key和value是一一对应的
    java.util.HashMap<k,v>集合 implement Map<k,v>接口
    HashMap集合的特点:
        1. HashMap集合底层是哈希表:查询的速度特别快
            JDK1.8之前:数组+单项列表
            JDK1.8之后:数组+单项列表/红黑树(链表的长度超过8):提高查询的速度
        2. HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致
    java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
    LinkedHashMap集合的特点:
        1. LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
        2. LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的
 */
public class Demo01Map {
    public static void main(String[] args) {
        show01(); // V put(K key, V value): 将指定的值与此映射中的指定键关联(可选操作)。
        show02(); // V remove(Object key): 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
        show03(); // V get(Object key): 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
        shoe04(); // boolean containsKey(Object key): 包含返回true ,不包含返回 false
    }
 
    /*
        boolean containsKey(Object key): 包含返回true ,不包含返回 false
     */
    private static void shoe04() {
        //创建Map集合对象
        Map<String, Integer> map = new HashMap<>();
        map.put("AAA",235);
        map.put("BBB",123);
        map.put("CCC",654);
 
        boolean aaa = map.containsKey("AAA");
        boolean ggg = map.containsKey("GGG");
        System.out.println(aaa); // true
        System.out.println(ggg); // false
    }
 
    /*
        public V get(Object key): 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
            返回值:V
                key存在,返回对应的value值
                key不存在,返回null
     */
    private static void show03() {
        //创建Map集合对象
        Map<String, Integer> map = new HashMap<>();
        map.put("AAA",235);
        map.put("BBB",123);
        map.put("CCC",654);
 
        Integer ccc = map.get("CCC");
        Integer eee = map.get("EEE");
        System.out.println(ccc); // 654
        System.out.println(eee); // key不存在,返回null
 
        System.out.println("===========================================");
    }
 
    /*
        public V remove(Object key): 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
            返回值:V
                key存在,v返回被删除的值
                key不存在,v返回null
     */
    private static void show02() {
        //创建Map集合对象
        Map<String, Integer> map = new HashMap<>();
        map.put("AAA",235);
        map.put("BBB",123);
        map.put("CCC",654);
        System.out.println(map); // {AAA=235, CCC=654, BBB=123}
 
        Integer bbb = map.remove("BBB");
        Integer ddd = map.remove("DDD");
        System.out.println(bbb); // 123
        System.out.println(ddd); // key不存在,v返回null
 
        System.out.println(map); // {AAA=235, CCC=654}
 
        System.out.println("===========================================");
 
    }
 
    /*
        public V put(K key, V value): 将指定的值与此映射中的指定键关联(可选操作)。
            返回值:V
                存储键值对的时候,key不重复,返回值V是null
                存储键值对的时候,key重复,会使用新的value替换map中重复的value,返回被替换的value值
    */
    private static void show01() {
        //创建Map集合对象,多态
        Map<String, String> map = new HashMap<>();
 
        String v1 = map.put("李晨","范冰冰");
        System.out.println("v1:" + v1);
 
        String v2 = map.put("李晨","范冰冰2");
        System.out.println("v2:" + v2);
 
        System.out.println(map); // {李晨=范冰冰2}
 
        map.put("郭涛","李然");
        map.put("黄晓明","Angelababy");
        map.put("夏雨","袁泉");
        System.out.println(map);
 
        System.out.println("===========================================");
    }
}




v1:null
v2:范冰冰
{李晨=范冰冰2}
{夏雨=袁泉, 李晨=范冰冰2, 郭涛=李然, 黄晓明=Angelababy}
===========================================
{AAA=235, CCC=654, BBB=123}
123
null
{AAA=235, CCC=654}
===========================================
654
null
===========================================
true
false