Map 是 Java 集合框架中常用的一种数据结构,它提供了键值对的存储方式,可以通过键快速查找对应的值。Java 中提供了多种不同的 Map 实现,包括 HashMap、TreeMap、LinkedHashMap 等。
一、HashMap
HashMap 是 Java 集合框架中最常用的 Map 实现之一。它基于哈希表实现,允许 null 键和 null 值,不保证键值对的顺序。
HashMap 的基本操作包括 put、get、remove,示例如下:
// 创建一个空的 HashMap Mapmap = 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.Entryentry : 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 Mapmap = 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,指定迭代顺序为插入顺序 Mapmap = 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 实现。