集合进阶-map

Map集合的概述和使用

Map集合概述

  • Interface Map<K,V> K:键的类型 V:值的类型
  • 将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值
  • 举例,学生的学号(键)和姓名(值)

创建Map集合的对象

  • 使用多态的方式
  • 具体的实现类 HashMap

Map基本功能

方法名说明
V put(K key,V value)添加元素(也可以更新指定键的值)
V remove(Object key)根据键删除值(返回键被删除的值)
void clear()移除所有键值元素
boolean containsKey(Object key)判断集合中是否包含指定的键
boolean containsValue(Object value)判断集合是否包含指定的值
boolean isEmpty()判断集合是否为空
int size()集合的长度(集合中键值对的个数)

Map集合的获取功能

方法名说明
V get(Object key)根据键获取值
Set keySet()获取所有键的集合
Collection values()获取所有值的集合
Set<Map.Entry<K,V>> entrySet()获取所有键值对 对象的集合

注:keySet和values方法的返回值是Set接口实现类和Collection接口实现类的具体对象

Map集合的遍历

方法一
  • 获取所有键的集合,使用keySet()方法实现
  • 遍历这个集合
  • 利用get(Object key)方法在集合中获取到每一个键的值
public class Test {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("no1", "Xiaobai");
        map.put("no2", "Xiaoxue");
        map.put("no3", "Xiaokai");
        Set<String> keyset = map.keySet();
        for (String s : keyset) {
            System.out.println(s + " " + map.get(s));
        }
    }
}

方法二
  • 获取所有键值对 对象的集合,使用entrySet()方法实现
  • 遍历键值对 对象的集合,得到每一个键值对 对象
  • 使用getKey()得到键,使用getValue得到值
public class Test2 {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("no1", "Xiaobai");
        map.put("no2", "Xiaoxue");
        map.put("no3", "Xiaokai");
        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        for (Map.Entry<String, String> me : entrySet) {
            System.out.println(me.getKey() + " " + me.getValue());
        }
    }
}

Map补充

HashMap实现类中重写了toString方法,输出格式为 键=值

当key为引用类型对象时,我们需要在类中重写hashCode和equals方法才能保证键唯一性

Map中如果想要实现按键值有序排列元素,可以使用TreeMap实现类