TreeMap是基于红黑树的NavigableMap实现.该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator进行排序(TreeMap中的key需要实现Comparable接口并重写compareTo方法,或者使用Comparator比较器),具体取决于使用的构造方法.
它继承AbstractMap, 实现NavigableMap, Cloneable, Serializable三个接口. 其中AbstractMap表明TreeMap为一个Map即支持key-value的集合,NavigableMap则意味着它支持一系列的导航方法,具备针对给定搜索目标返回最接近匹配项的导航方法.
构造方法
方法 | 描述 |
---|---|
TreeMap() | 使用键的自然顺序构造一个新的,空的树映射 |
TreeMap(Comparator<? super K> comparator) | 构造一个新的, 空的树映射,该映射根据给定比较器进行排序 |
TreeMap(Map<? extends K, ? extends V> m) | 构造一个与给定映射具有相同映射关系的新的树映射,该映射根据其键的自然顺序进行排序 |
TreeMap(SortedMap<K, > extends V> m) | 构造一个与指定有序映射具有相同映射关系和相同排序顺序的新的树映射. |
实例
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeMap;
public class HashMapExercise {
public static void main(String[] args) {
// 默认构造方法 它的默认的排序为升序
TreeMap< Integer, String> map = new TreeMap<>();
// 添加方法
map.put(18,"小红");
map.put(30, "小明");
map.put(20, "小辉");
map.put(19, "小李");
System.out.println(map); // {18=小红, 19=小李, 20=小辉, 30=小明}
// 使用比较器的构造方法
TreeMap<Integer, String> treeMap = new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
//
treeMap.put(18,"小红");
treeMap.put(30, "小明");
treeMap.put(20, "小辉");
treeMap.put(19, "小李");
System.out.println(treeMap); // {30=小明, 20=小辉, 19=小李, 18=小红}
// 容器大小
int size = treeMap.size();
System.out.println(size); // 4
// 返回指定键映射的值
String value = treeMap.get(20);
System.out.println(value); // 小辉
// 判断是否存在该键
boolean flg = treeMap.containsKey(18);
System.out.println(flg); // true
// 移除该键并返回映射的值
value = treeMap.remove(20);
System.out.println(value); // 小辉
value = treeMap.remove(50);
System.out.println(value); // 如果不存在则返回null
}
}
TreeMap的遍历方式与Map的遍历方式是一样的,因为TreeMap就是实现Map接口的
网友评论