Map 是 Java 集合框架中常用的一种数据结构,它提供了键值对的存储方式,可以通过键快速查找对应的值。Java 中提供了多种不同的 Map 实现,包括 HashMap、TreeMap、LinkedHashMap 等。
一、HashMap
HashMap 是 Java 集合框架中最常用的 Map 实现之一。它基于哈希表实现,允许 null 键和 null 值,不保证键值对的顺序。
HashMap 的基本操作包括 put、get、remove,示例如下:
// 创建一个空的 HashMap
Map map = new HashMap();
// 向 HashMap 中添加键值对
map.put("key1", "value1");
map.put("key2", "value2");
// 从 HashMap 中获取值
String value1 = map.get("key1");
// 从 HashMap 中删除键值对
map.remove("key2");
除了基本操作外,HashMap 还提供了一些常用的方法,如 keySet、values、entrySet,可以分别获取键的集合、值的集合、键值对的集合。
// 遍历 HashMap 的方式之一:使用 keySet 方法获取键的集合,并依次获取值
for (String key : map.keySet()) {
String value = map.get(key);
System.out.println(key + ": " + value);
}
// 遍历 HashMap 的方式之二:使用 values 方法获取值的集合
for (String value : map.values()) {
System.out.println(value);
}
// 遍历 HashMap 的方式之三:使用 entrySet 方法获取键值对的集合
for (Map.Entry entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + ": " + value);
}
二、TreeMap
TreeMap 是基于红黑树实现的 Map,它保证键值对按照键的自然顺序排序,或者按照指定的 Comparator 排序。TreeMap 不允许 null 键,但允许 null 值。
TreeMap 的使用方法和 HashMap 类似,示例如下:
// 创建一个空的 TreeMap
Map map = new TreeMap();
// 向 TreeMap 中添加键值对
map.put("key1", "value1");
map.put("key3", "value3");
map.put("key2", "value2");
// 遍历 TreeMap 的方式和遍历 HashMap 相同
for (String key : map.keySet()) {
String value = map.get(key);
System.out.println(key + ": " + value);
}
三、LinkedHashMap
LinkedHashMap 是基于哈希表和链表实现的 Map,它保留插入顺序,可以按照插入顺序遍历键值对,或者按照访问顺序(LRU)遍历键值对。LinkedHashMap 允许 null 键和 null 值。
LinkedHashMap 的基本操作和 HashMap 类似,只不过它保留插入顺序。示例如下:
// 创建一个空的 LinkedHashMap,指定迭代顺序为插入顺序
Map map = new LinkedHashMap(16, 0.75f, true);
// 向 LinkedHashMap 中添加键值对
map.put("key1", "value1");
map.put("key3", "value3");
map.put("key2", "value2");
// 通过访问顺序遍历 LinkedHashMap
map.get("key1");
map.get("key2");
for (Map.Entry entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + ": " + value);
}
四、总结
通过本文的介绍,我们了解了 Java 集合框架中 Map 的常用实现及其基本操作。在实际开发中,我们需要根据实际需求选择合适的 Map 实现。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/191161.html
微信扫一扫
支付宝扫一扫