如何使用java的TreeMap

2025-09-29 04:52:34

1、对于TreeMap的介绍,先从测试例子开始,首先创建一个空的TreeMap,然后放入4个元素

TreeMap<Long, String> treeMap = new TreeMap<Long, String>();

treeMap.put((long)2, "2");

treeMap.put((long)1, "1");

treeMap.put((long)3, "3");

treeMap.put((long)4, "4");

如何使用java的TreeMap

2、直接打印下TreeMap默认的元素顺序

System.out.println("default:" + treeMap);

运行结果如图,从图中可以看出是按照顺序打印出来的,放入元素的时候没有按顺序放入,中间也没有做任何的排序,说明放入进去时候就默认按顺序排列好了

如何使用java的TreeMap

3、对于排序的集合,常常会取最大元素和最小元素,TreeMap提供了firstEntry和lastEntry方法

System.out.println("firstKey:" + treeMap.firstKey());

System.out.println("firstEntry:" + treeMap.firstEntry());

System.out.println("lastKey:" + treeMap.lastKey());

System.out.println("lastEntry:" + treeMap.lastEntry());

运行之后,从下图可以看出效果,确实很方便

如何使用java的TreeMap

4、如果想取某一区间(子集)的元素,该怎么获取呢。可以使用headMap(K toKey)所有对象Key值小于toKey,subMap(K fromKey, K toKey)小于toKey大于等于fromKey,一个是开区间一个是闭区间注意区分

如何使用java的TreeMap

5、还有个情况下,如果放入一个Long对象,获取的时候使用另外一个Long对象,但值相等,可以取到元素吗,

TreeMap<Long, String> buyOrderMap = new TreeMap();

Long one = new Long("901");

Long anotherOne = new Long("901");

buyOrderMap.put(one, "1");

System.out.println(buyOrderMap.get(anotherOne));

如下图,从打印结果上可以看出,放入的值为1的元素获取到了,则表示key是不同的对象,值一样同样可以取出对应的元素

如何使用java的TreeMap

6、如果放入两个值一样,但不是同一个对象作为key,会进行覆盖吗

TreeMap<Long, String> buyOrderMap1 = new TreeMap();

Long one1 = new Long("901");

Long anotherOne1 = new Long("901");

buyOrderMap1.put(one1, "1");

buyOrderMap1.put(anotherOne1, "2");

System.out.println(buyOrderMap1);

从打印结果可以看出,key即使是不同的对象,如果值一样,同样会进行覆盖

如何使用java的TreeMap

7、从上面介绍的例子中可以看出,在用到需要有序的map集合时,使用TreeMap带来了很多方便,虽然TreeMap实现了Map的接口,具有map的所有特性,但性能没有HashMap好,所以在处理不需要排序的集合元素时,还是建议选择HashMap。选择最合适的才是最好的。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢