一、基本概念
1、Map 是什么?
Map 是 Java 为存储键值对数据提供的接口。键值对由键(key)和值(value)组成。键是用来识别一个值的唯一方法。值可以是任何类型的数据。
2、Map 常见实现类
Map 包括常见实现类 HashMap、TreeMap 和 LinkedHashMap。
- HashMap:HashMap 以哈希表为基础,性能较高,但键值对的顺序不确定。
- TreeMap:TreeMap 以红黑树为基础,具有较好的效果按键的自然顺序排列排序功能和键值对的顺序。
- LinkedHashMap:LinkedHashMap 是基于链表实现了良好的插入顺序,按插入顺序排列键值对的顺序。
二、Map 的使用
1、添加键值对
向 Map 可以使用中添加键值对 put() 方法。put() 该方法将返回旧值。如果没有旧值,则返回 null。
Map<String, Integer> map = new HashMap<>(); map.put(苹果), 10); map.put(香蕉”, 20); map.put("梨", 30);
2、获取值
获取 Map 可使用中等值 get() 方法。get() 该方法将返回指定键对应的值。如果没有找到键,则返回 null。
Integer appleCount = map.get(苹果); Integer bananaCount = map.get(香蕉); Integer pearCount = map.get("梨");
3、删除键值对
删除 Map 可以使用中键值对 remove() 方法。remove() 该方法将返回被删除的值。如果没有找到键,则返回 null。
Integer removedCount = map.remove(苹果);
4、遍历 Map
遍历 Map 可以使用中键值对 forEach() 方法。forEach() 方法会接受一个 Consumer 参数,参数将执行每个键值指定的动作。
map.forEach((key, value) -> System.out.println(key + "=" + value));
三、常见问题
1、如何选择合适的 Map 实现类?
HashMap、TreeMap 和 LinkedHashMap 都是 Map 常见的实现类,各有优缺点。
- HashMap:HashMap 性能高,适用于需要快速搜索和插入数据的场景。
- TreeMap:TreeMap 具有良好的排序功能,适用于需要对数据进行排序的场景。
- LinkedHashMap:LinkedHashMap 适用于需要保留数据插入顺序的场景,具有良好的插入顺序。
2、Map 的键可以是 null 吗?
Map 的键可以是 null,但值不能是 null。如果键是 null,该键对应的值将存储在 Map 中。
3、Map 的值可以是 null 吗?
Map 的值可以是 null。如果值是 null,该键对应的值将存储在 Map 中。
4、Map 键和值可以是不同的类型吗?
Map 键和值可以是不同的类型。必须实现键的类型 Comparable 为了能够进行比较,接口。