📅  最后修改于: 2023-12-03 14:42:21.658000             🧑  作者: Mango
java.util.TreeMap
类是Java集合框架中的一个实现类,它继承自AbstractMap
类且实现了NavigableMap
接口。TreeMap
是基于红黑树的数据结构,它能够以排序的方式存储键值对,并且提供快速的查找、插入和删除操作。
以下是TreeMap
类的几个重要特性:
TreeMap
中的键按照自然顺序或自定义的比较器进行排序。这意味着通过TreeMap
迭代获取的键值对是有序的。TreeMap
内部使用红黑树数据结构来存储键值对,它能够保持树的平衡性,以保证基本操作的时间复杂度为O(log N)。TreeMap
可以在O(log N)的时间复杂度内执行查找、插入和删除操作。TreeMap
实现了NavigableMap
接口,提供了一系列导航方法,例如firstKey()
、lastKey()
、higherKey(K key)
、lowerKey(K key)
等。以下是TreeMap
类的常见用法示例:
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
// 创建一个TreeMap实例
TreeMap<Integer, String> treeMap = new TreeMap<>();
// 添加键值对
treeMap.put(3, "Apple");
treeMap.put(1, "Banana");
treeMap.put(2, "Orange");
treeMap.put(4, "Grape");
// 遍历输出键值对(有序)
for (Integer key : treeMap.keySet()) {
String value = treeMap.get(key);
System.out.println(key + ": " + value);
}
// 获取最小键
Integer firstKey = treeMap.firstKey();
System.out.println("First key: " + firstKey);
// 获取最大键
Integer lastKey = treeMap.lastKey();
System.out.println("Last key: " + lastKey);
// 获取大于指定键的最小键
Integer higherKey = treeMap.higherKey(2);
System.out.println("Higher key than 2: " + higherKey);
// 获取小于指定键的最大键
Integer lowerKey = treeMap.lowerKey(3);
System.out.println("Lower key than 3: " + lowerKey);
// 删除键值对
treeMap.remove(2);
// 判断键是否存在
boolean containsKey = treeMap.containsKey(2);
System.out.println("Contains key 2: " + containsKey);
}
}
java.util.TreeMap
类是一个基于红黑树的有序集合实现,具备高效的键值对的查找、插入和删除操作。它提供了排序的键值对迭代以及导航方法的支持。在需要有序存储键值对并且需要频繁执行查找操作时,TreeMap
是一个不错的选择。