TreeMap是Map实现类SortMap的实现类。TreeMap实现了NavigableMap接口,内部的结构是基于红黑树的。
红黑树是由节点组成的数据结构,其中从根节点开始,树的每一个节点的左分支的节点元素的都小于该节点,右分支的节点元素都大于该节点。定义的大小顺序是按照元素的自然顺序或者是自定义的大小顺序。
提到的自然排序和自定义排序两种排序方式:
- 自然排序:默认情况下,TreeMap会对键值对进行自然排序即整数按照升序的排序方式,字符串按照字母顺序进行排序。
- 自定义排序:当我们需要特定的排序方式时,我们可以在定义TreeMap时,创建Comparator对象定义自己的排序规则。
构造函数
- TreeMap()——按自然顺序创建一个新的空TreeMap
- TreeMap(Comparator<? super K> coparator)——按给定的自定义Comparator排序方式创建TreeMap
- TreeMap(Map<? extends K,? extends V> m)——创建一个包含与给定映射相同映射的新TreeMap映射,根据键的自然顺序排序
- TreeMap(SortedMap<K,? extends V> m)——创建一个包含与给定映射相同映射的新TreeMap映射,使用与指定映射相同的顺序
常用方法
- Map.Entry<K,V> ceilingEntry(K key)——返回与大于或等于给定键的最小键关联的键 - 值映射,或者null如果没有这样的键。
- K ceilingKey<K key>——返回大于或等于给定键的最小键,或者null,如果没有这样的键。
- void clear()——删除该TreeMap中所有映射
- Object clone()——返回该TreeMap实例的浅拷贝的对象
- Comparator<? super K> comparator()——返回对该TreeMap中键进行排序的比较器,或者null
- NavigableSet<K> descendingKeySet()——返回NavigableSet映射中包含的键的逆序
- NavigableMap<K,V> descendingMap()——返回此映射中包含的映射的逆序
- Set<Map.Entry<K,V>> entrySet()——返回TreeMap中的每一个键值对的Set对象
- Map.Entry<K,V> firstEntry()——返回映射中最小键的键值对,或者null
用法举例:
package main;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<>();
treeMap.put(3, "Wuhan");
treeMap.put(15, "Xian");
treeMap.put(2, "Hongkong");
treeMap.put(8, "Guizhou");
treeMap.put(34, "Guiling");
treeMap.put(12, "Jingzhou");
treeMap.put(21, "Qianjiang");
Set tSet = treeMap.entrySet();
Iterator iter = tSet.iterator();
while (iter.hasNext()) {
Map.Entry hmEntry = (Map.Entry) iter.next();
System.out.println("Key is " + hmEntry.getKey());
System.out.println("Value is " + hmEntry.getValue());
}
System.out.println(treeMap.lastEntry());
System.out.println(treeMap.lastKey());
System.out.println(treeMap.higherKey(14));
System.out.println(treeMap.higherEntry(8));
treeMap.replace(8, "Guizhou", "LA");
System.out.println(treeMap.higherEntry(3));
}
}
结果:
Key is 2
Value is Hongkong
Key is 3
Value is Wuhan
Key is 8
Value is Guizhou
Key is 12
Value is Jingzhou
Key is 15
Value is Xian
Key is 21
Value is Qianjiang
Key is 34
Value is Guiling
34=Guiling
34
15
12=Jingzhou
8=LA
网友评论