Java TreeMap
时间: 2025-01-05 07:20:26 浏览: 9
### Java TreeMap 的特性和用法
#### 特性概述
TreeMap 是一种基于红黑树实现的有序映射结构。它提供了按键自然顺序或自定义比较器排序的功能,确保键值对按照特定顺序存储和访问[^1]。
#### 构造方法
TreeMap 提供多种构造函数来创建实例:
- 默认构造函数 `new TreeMap<>()` 创建一个新的空 TreeMap 实例。
- 使用指定 Comparator 进行排序:`new TreeMap<>(Comparator<? super K> comparator)` 可以通过传入定制化的比较器改变默认升序排列方式。
- 复制已有 Map 对象的内容初始化新的 TreeMap :`new TreeMap(Map<? extends K, ? extends V> m)`
```java
// 自然排序
TreeMap<Integer, String> naturalOrder = new TreeMap<>();
// 定义降序排序
Comparator<Integer> descendingComparator = (a, b) -> Integer.compare(b, a);
TreeMap<Integer, String> customOrder = new TreeMap<>(descendingComparator);
naturalOrder.put(30, "Thirty");
naturalOrder.put(20, "Twenty");
System.out.println(naturalOrder); // 输出 {20=Twenty, 30=Thirty}
customOrder.put(30, "Thirty");
customOrder.put(20, "Twenty");
System.out.println(customOrder); // 输出 {30=Thirty, 20=Twenty}
```
#### 基本操作
支持常见的增删改查功能,并保持内部数据始终处于已排序状态。
- 插入元素:使用 put 方法向 map 中添加新条目;
- 删除元素:remove(key),如果存在则移除对应的 key-value pair;
- 查询元素:get(key),返回与给定 key 关联 value 或者 null 表明不存在该 key;
此外还提供了一些有用的辅助方法如 firstKey(), lastKey() 来快速定位最小最大键值等。
#### 高效遍历
由于 TreeMap 维护着平衡二叉查找树结构,在迭代过程中能够高效地按序访问所有节点而无需额外排序成本。这使得其非常适合用于需要频繁检索范围区间内的记录场景下。
阅读全文