HashMap底层是 数组+链表 即散列表 或 邻接链表
    1.8版本后 数组+链表+红黑树
    hashCode方法中
    不同的对象 可能 产生相同的hashCode码
    不同的hashCode() 一定对应 不同的对象

    1.java.util包
    2.创建对象
    无参数构造方法
    带容量的构造方法
    带容量和负载因子的构造方法
    带(Map<? extends K, ? extends V> m)参数构造方法
    3.常用方法
    增删改查
    增 put(key,value)
    添加 存放一组映射关系 key-value
    1.key存储的顺序与取得顺序不同
    2.不同的key可以存储相同的value
    3.key若有相同的 则将原有的value覆盖(跟set刚好相反)
    删 E = remove(key); 或 remove(key,value);
    删除
    改 replace(key,newValue); 或 replace(key,oldValue,newValue);
    也可以用put(key.value1) 与 put(key,value2)来改
    查 E = get(key);

    其他方法
    clear();
    //清空集合
    containsKey(key);
    //集合中是否包含key键
    containsValue(value);
    //集合中是否包含value
    isEmpty();
    //集合是否为空
    putAll(map);
    //将另一个集合的元素全部添加进来
    getOrDefault(key,defaultValue);
    //若key存在就返回value 若不存在就返回defaultValue
    putIfAbsent(key,value);
    //key若不存在就存入 若存在就不存入

    遍历map
    方式一:需要获取到所有的key 遍历key 通过key获取value
    即 Set = keySet();//K是key所对应的的类型

    1. HashMap<String,String> map = new HashMap<>();
    2. map.put("小兰","eee");
    3. map.put("小明","bbb");
    4. map.put("小程","aaa");
    5. map.put("小红","ccc");
    6. map.put("小兰","ccc");
    7. map.put("小黑","ddd");
    8. System.out.println(map);
    9. //获取全部key
    10. Set<String> keys = map.keySet();
    11. //迭代器遍历keys
    12. Iterator<String> it = keys.iterator();
    13. while(it.hasNext()){
    14. String key = it.next();
    15. String value = map.get(key);
    16. System.out.println(map.get(key));
    17. }
    18. }

    方式二:Set> = entrySet(); 返回全部entrySet对象
    Map.Entry即entry对象 即entry对象里面存储所对应的键值对类型key-value

    1. HashMap<String,String> map = new HashMap<>();
    2. map.put("小兰","eee");
    3. map.put("小明","bbb");
    4. map.put("小程","aaa");
    5. map.put("小红","ccc");
    6. map.put("小兰","ccc");
    7. map.put("小黑","ddd");
    8. Set<Map.Entry<String,String>> entrySet = map.entrySet();//获取全部entry对象
    9. Iterator<Map.Entry<String,String>> it = entrySet.iterator();
    10. while(it.hasNext()){
    11. Map.Entry<String,String> entry = it.next();//接收对象
    12. String value = entry.getValue();
    13. String key = entry.getKey();
    14. System.out.println(key+"---"+value);
    15. }

    map.png