曾梦想执剑走天涯,我是程序猿【AK】
简述概要
提示:简要描述文章内容,适合哪些人观看
知识图谱
TreeMap
是 Java 中的一个基于红黑树(一种自平衡二叉查找树)实现的有序映射(Map)接口。它按照键(key)的自然顺序(自然排序)或者根据创建时提供的 Comparator
来存储键值对。在 TreeMap
中,键值对是按照键的升序排列的,这意味着你可以进行高效的有序键值对操作。
主要特性:
-
有序性:
TreeMap
中的元素是有序的,这意味着你可以按照键的顺序遍历TreeMap
。 -
唯一性:
TreeMap
中的键是唯一的,不允许有重复的键。 -
排序:
TreeMap
可以自然排序,也可以通过自定义Comparator
来定义排序规则。 -
性能:由于底层是红黑树,
TreeMap
在插入、删除和查找操作上具有对数时间复杂度(O(log n))。
核心方法:
- put(K key, V value):添加或替换键值对。如果键已存在,则替换其值。
- get(Object key):根据键获取对应的值。
- remove(Object key):移除指定键的键值对。
- containsKey(Object key):检查是否包含指定的键。
- containsValue(Object value):检查是否包含指定的值。
- keySet():返回键的集合视图,这些键按自然顺序或自定义顺序排序。
- values():返回值的集合视图。注意,
values()
返回的集合不是有序的。 - entrySet():返回键值对的集合视图。这个集合是有序的,并且按照键的顺序排列。
使用场景:
- 当你需要一个有序的映射时,
TreeMap
是一个很好的选择。 - 如果你需要快速查找、插入和删除操作,并且对数据的顺序有要求,
TreeMap
也很适合。
示例代码:
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<>();
// 使用自然排序(升序)
treeMap.put(3, "C");
treeMap.put(1, "A");
treeMap.put(2, "B");
// 遍历 TreeMap
System.out.println("Natural order:");
for (Integer key : treeMap.keySet()) {
System.out.println(key + " = " + treeMap.get(key));
}
// 使用自定义 Comparator 进行降序排序
TreeMap<Integer, String> treeMapDesc = new TreeMap<>((a, b) -> b.compareTo(a));
treeMapDesc.put(3, "C");
treeMapDesc.put(1, "A");
treeMapDesc.put(2, "B");
System.out.println("\nCustom order (descending):");
for (Integer key : treeMapDesc.keySet()) {
System.out.println(key + " = " + treeMapDesc.get(key));
}
}
}
在这个示例中,我们创建了两个 TreeMap
实例。第一个实例使用自然排序(升序),而第二个实例使用自定义的 Comparator
来实现降序排序。我们通过 keySet()
方法遍历 TreeMap
,它返回的键是有序的。
TreeMap
是 Java 集合框架中的一个重要组成部分,它提供了一种在保持数据有序的同时进行高效操作的方式。
后续更新数据结构与算法篇时,会在此篇更新上链接,详解下红黑树(TreeMap即红黑树结构)......
---- 永不磨灭的番号:我是AK