Map是Java集合框架中的一种容器,它用来存储键值对(key-value pairs)。
一、Map接口的实现类有很多,常用的有HashMap、TreeMap和LinkedHashMap。
1. HashMap:
- 特点:基于哈希表实现,无序存储,允许存储null键和null值。
- 使用方法:使用put(key, value)方法存储键值对,使用get(key)方法根据键获取值,使用remove(key)方法移除键值对等。
- 代码示例:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 5);
int value = map.get("apple");
map.remove("banana");
2. TreeMap:
- 特点:基于红黑树实现,按照键的自然顺序或自定义比较器进行排序。
- 使用方法:与HashMap类似,但不能存储null键,按照键的顺序遍历时,会按照排序顺序输出键值对。
- 代码示例:
Map<String, Integer> map = new TreeMap<>();
map.put("apple", 10);
map.put("banana", 5);
int value = map.get("apple");
map.remove("banana");
3. LinkedHashMap:
- 特点:基于哈希表和双向链表实现,有序存储,保持元素的插入顺序。
- 使用方法:与HashMap类似,但遍历时可以按照插入顺序输出键值对。
- 代码示例:
Map<String, Integer> map = new LinkedHashMap<>();map.put("apple", 10);map.put("banana", 5);int value = map.get("apple");map.remove("banana");
二、Map与其他容器的比较:
- 与List相比,Map中的元素不是按照索引顺序访问的,而是通过键来获取对应的值。
- 与Set相比,Map存储的是键值对,而Set只存储单个元素。
三、Map的高级应用:
- 遍历Map:使用keySet()、values()或entrySet()方法遍历键、值或键值对。
- 判断键或值是否存在:使用containsKey(key)或containsValue(value)方法。
- 合并Map:使用putAll()方法将一个Map合并到另一个Map中。
- 获取键或值的集合:使用keySet()方法获取键的集合,使用values()方法获取值的集合。
- 使用自定义的对象作为键:需要实现hashCode()和equals()方法来保证键的唯一性和正确性。
以上是Map的概述、特点、使用方法以及与其他容器的比较和高级应用的简要介绍。具体的代码示例和更详细的说明可以根据具体需求进一步进行学习和实践。
(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)