文章目录

  • 前言
  • 一、TreeMap
  • 二、使用
  • 1.构造器
  • 1.1 创建
  • 2.常用方法(JDK 1.6)
  • 1.添加元素
  • 2.删除元素
  • 3.修改元素
  • 4.查找
  • 5.遍历
  • 6.数量
  • 最后
  • 相关





前言

TreeMap 是一个有序的key-value集合,它是通过红黑树实现的。

  • TreeMap中的元素默认按照keys的自然排序排列。
    (例如,对Integer来说,其自然排序就是数字的升序;对String来说,其自然排序就是按照字母表排序)
  • TreeMap是非线程安全的


一、TreeMap

基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

Mat java 创建 对象 java 创建map的多种方法_Mat java 创建 对象

public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, Serializable

二、使用

1.构造器

1.1 创建

TreeMap() 使用其键的自然排序构造一个新的空树状图。

创建一个空的 TreeMap。

TreeMap<String, Integer> map = new TreeMap<>();

2.常用方法(JDK 1.6)

1.添加元素

put(K key, V value) 将指定的值与此映射中的指定键相关联。

向map中添加映射关系(键值对)。

TreeMap<String, Integer> map = new TreeMap<>();
        // 添加元素
        map.put("a", 1);
        System.out.println(map); // {a=1}
2.删除元素

remove(Object key) 从此TreeMap中删除此键的映射(如果存在)。

移除指定的key

TreeMap<String, Integer> map = new TreeMap<>();
        map.put("a", 1);
        // 删除元素
        map.remove("a");
        System.out.println(map); // {}
3.修改元素

replace(K key, V value) 只有当目标映射到某个值时,才能替换指定键的条目。

修改指定key的值。

TreeMap<String, Integer> map = new TreeMap<>();
        map.put("a", 1);
        // 修改
        map.replace("a",123);
        System.out.println(map); // {a=123}
4.查找

containsKey(Object key) 如果此映射包含指定键的映射,则返回 true 。
containsValue(Object value) 如果此地图将一个或多个键映射到指定值,则返回 true 。
firstEntry() 返回与该地图中的最小键相关联的键值映射,如果地图为空,则返回 null 。
firstKey() 返回此地图中当前的第一个(最低)键。
lastEntry() 返回与该地图中最大关键字关联的键值映射,如果地图为空,则返回 null 。
lastKey() 返回当前在此地图中的最后(最高)键。
get(Object key) 返回到指定键所映射的值,或 null如果此映射包含该键的映射。

使用解释请看注释

TreeMap<String, Integer> map = new TreeMap<>();
        map.put("a", 1);
        map.put("b", 2);

        // 包含key
        boolean a = map.containsKey("a");
        // 包含value
        boolean b = map.containsValue(1);
        // 第一个映射
        Map.Entry<String, Integer> firstEntry = map.firstEntry();
        // 第一个键
        String firstKey = map.firstKey();
        // 最后一个映射
        Map.Entry<String, Integer> lastEntry = map.lastEntry();
        // 最后一个键
        String lastKey = map.lastKey();
        // 获取指定键
        Integer get = map.get("a");

        System.out.println(a); // true
        System.out.println(b); // true
        System.out.println(firstEntry); // a=1
        System.out.println(firstKey); // a
        System.out.println(lastEntry); // b=2
        System.out.println(lastKey); // b
        System.out.println(get); // 1
5.遍历

keySet() 返回此地图中包含的键的Set视图。
values() 返回此地图中包含的值的Collection视图。
entrySet() 返回此地图中包含的映射的Set视图。

看注释

TreeMap<String, Integer> map = new TreeMap<>();
        map.put("a", 1);
        map.put("b", 2);

        // 键集合
        Set<String> key = map.keySet();
        // 值集合
        Collection<Integer> values = map.values();
        // 映射集合
        Set<Map.Entry<String, Integer>> entries = map.entrySet();

        System.out.println(key); // [a, b]
        System.out.println(values); // [1, 2]
        System.out.println(entries); // [a=1, b=2
6.数量

size() 返回此地图中键值映射的数量。

TreeMap<String, Integer> map = new TreeMap<>();
        map.put("a", 1);
        map.put("b", 2);

        // 数量
        int size = map.size();
        System.out.println(size); // 2



最后

TreeMap 的使用和 HashMap 使用差不多,不同的是TreeMap是有序的,HashMap是无序的。因为有序所以性能相比稍微低一点。

TreeMap用法总结参考:https://www.jianshu.com/p/e11fe1760a3d