一 Map特点

1 双列集合 ,一个键(key)对应一个值(value)

2 键不可以重复,值可以重复(因为键是由Set集合组成的)

3 值可以null

  • 所以 定义一个泛型为String类型的List集合,统计该集合中每个字符出现的次数——>字符--次数:一一对应关系,所以用HashMap

二 Map集合常用方法

put(K key,V value) 向map中添加元素
size() 获取map集合的大小
containsKey(K k) 判断集合中是否包含指定的键
containsValue(V v) 判断集合中是否包含指定的值
isEmpty() 判断集合是否为空
clear() 清空
remove(K k) 删除

:如果键存在,值会进行覆盖

三 Map集合的两种遍历方式

1 keySet()方法

通过Keyset()获取所有的key然后通过Key获取对应的value

HashMap<Student,String> map = new HashMap<>();
    Student s1 = new Student("棒棒",19);
    Student s2 = new Student("滴滴",18);
    Student s3 = new Student("跳跳",17);
    map.put(s1,"内蒙");
    map.put(s2,"湖南");
    map.put(s3,"南京");
    //方法一:使用KeySet获取所有的key
    Set<Student> keys=map.keySet();
    for (Student key : keys) {
       String value=map.get(keys);
       System.out.println(key+"-"+value);
    }

2 entrySet()方法

通过entrySet()获取所有的key value,然后通过Key获取对应的value

方法二:使用EntrySet获取键和值
   Set<Map.Entry<Student,String>> entries=map.entrySet();
    for (Map.Entry<Student, String> entry : entries) {
        Student key=entry.getKey();
        String value=entry.getValue();
        System.out.println(key+"-"+value);

HashMap集合底层原理

是哈希表结构
依赖hashCode()方法和equals()方法保证键唯一性
如果键要存储的是自定义对象,要重写hashCode()和equals()方法

TreeMap集合底层原理

是红黑树结构
依赖自然排序或者比较器排序,对键进行排序
如果键要存储自定义对象,要定义排序的规则