Java 中的 TreeMap 与 HashMap 不同之处在于 HashMap 不是有序的,而 TreeMap 可以根据 key 的值进行排序。可以按照 key 的对象实现的 Comparable 里面的 compareTo 方法。其原理与 TreeSet 类似。
package com.haicoder.net.map;
import java.util.Map;
import java.util.TreeMap;
public class TreeMapTest {
public static void main(String[] args) {
System.out.println("嗨客网(www.haicoder.net)");
Map<String, String> strMap = new TreeMap<>();
strMap.put("嗨客网", "www.haicoder.net");
strMap.put("年龄", "100岁");
strMap.put("A", "嗨客网");
strMap.put("Z", "嗨客网");
System.out.println("strMap 内容为:" + strMap);
}
}
运行结果如下:
因为 String 默认实现了 Comparable 接口,所以我们 key 定义为 String 类型的时候它是可以排序的。如果我们 key 存放的是一个对象,没有实现 Comparable 它会和 TreeSet 一样,抛出异常。
如果不深究 TreeMap 底层原理,在使用上,TreeMap 和 HashMap 是一样的,TreeMap 会在 key 的基础上对数据进行排序,获取的时候,可以获取到按照 key 排序的集合数据。