• Index

TreeMap 实现类

Last updated: ... / Reads: 56 Edit

TreeMap是 Java 中实现了 Map 接口的有序映射类。它基于红黑树数据结构来存储键值对,并且按照键的自然顺序或者自定义比较器的顺序进行排序。

下面是一些TreeMap的特点:

  • 有序性:TreeMap会根据键的顺序对元素进行排序,可以使用键的自然顺序(如果键类型实现了Comparable接口)或者通过自定义比较器来指定排序方式。
  • 基于红黑树:TreeMap内部使用红黑树来实现数据的存储和检索。这种数据结构保证了插入、删除和查找操作的时间复杂度都是O(log n),其中n是元素的数量。
  • 键不允许为空:TreeMap不允许键为null,因为它需要对键进行排序并建立红黑树。
  • 可以包含重复键:与HashMap不同,TreeMap允许存在重复的键。它使用键的比较结果来确定键值对的位置。
  • 支持导航方法:TreeMap提供了一些导航方法,如firstKey()、lastKey()、lowerKey(K key)、higherKey(K key)等,可以方便地获取最小键、最大键以及给定键的前后键。

总之,TreeMap是一个有序的、基于红黑树的实现了Map接口的类,适用于需要按照键的顺序进行操作的场景。 以下是一个使用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并打印输出
        for (Integer key : treeMap.keySet()) {
            System.out.println("Key: " + key + ", Value: " + treeMap.get(key));
        }

        // 获取最小键和最大键
        int minKey = treeMap.firstKey();
        int maxKey = treeMap.lastKey();

        System.out.println("Min Key: " + minKey);
        System.out.println("Max Key: " + maxKey);

        // 获取小于等于给定键的最大键
        int lowerKey = treeMap.floorKey(2);
        System.out.println("Lower Key: " + lowerKey);

        // 获取大于等于给定键的最小键
        int higherKey = treeMap.ceilingKey(2);
        System.out.println("Higher Key: " + higherKey);

        // 删除指定键的键值对
        treeMap.remove(2);

        // 判断是否包含某个键或值
        boolean containsKey = treeMap.containsKey(2);
        boolean containsValue = treeMap.containsValue("Banana");

        System.out.println("Contains Key 2: " + containsKey);
        System.out.println("Contains Value 'Banana': " + containsValue);
    }
}

运行以上代码,将会输出如下结果:

Key: 1, Value: Banana
Key: 2, Value: Orange
Key: 3, Value: Apple
Min Key: 1
Max Key: 3
Lower Key: 2
Higher Key: 3
Contains Key 2: false
Contains Value 'Banana': true

这个示例展示了如何创建TreeMap对象,添加键值对,遍历并打印输出,获取最小键和最大键,以及使用导航方法获取前后键。还演示了删除指定键的键值对和判断是否包含某个键或值的操作。


Comments

Make a comment

  • Index