大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
谦虚使人进步
想要了解一个类,就可以从它实现的接口和继承的父类开始。我们可以看到TreeMap实现了java.util.NavigableMap接口,NavigableMap它又继承了排序Map接口 java.util.SortedMap,因此TreeMap具有排序能力;其次,TreeMap实现了Cloneable和Serializable接口,它也具备克隆和序列化能力
image.png
TreeMap底层由红黑树实现,按照Key的自然顺序升序或者实现Comprator接口进行自定义排序。且TreeMap的排序特性只作用在key上。如果需要value也跟着排序就需要使用一些别的手段。
排序特性
按key排序
默认按key升序排列
package com.springboot.study.demo1;
import java.util.*;
public class Test {
public static void main(String[] args) {
TreeMap treeMap = new TreeMap() {
{
put(“3”, “1”);
put(“1”, “3”);
put(“2”, “2”);
}};
for (String s : treeMap.keySet()) {
System.out.println(s+”==>”+treeMap.get(s));
}
}
}
image.png
按key降序排列
package com.springboot.study.demo1;
import java.util.*;
public class Test {
public static void main(String[] args) {
TreeMap treeMap = new TreeMap(new Comparator() {
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
}) {
{
put(“3”, “1”);
put(“1”, “2”);
put(“2”, “3”);
}};
for (String s : treeMap.keySet()) {
System.out.println(s + “==>” + treeMap.get(s));
}
}
}
image.png
按value排序
如果需要value也跟着排序就需要使用一些别的手段。当然HashMap的value排序也可以使用这种方法
将Map转为 List,然后使用java.util.Collections工具类来排序。当然这种方法也适用于HashMap
package com.springboot.study.demo1;
import java.util.*;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
Map treeMap = new HashMap() {
{
put(“3”, “1”);
put(“1”, “2”);
put(“2”, “3”);
}};
//将Map转为 List
List> list = new ArrayList<>(treeMap.entrySet());
//按照
Collections.sort(list,new Comparator>() {
//升序排序
public int compare(Map.Entry o1, Map.Entry o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
for (Map.Entry e: list) {
System.out.println(e.getKey()+”==>”+e.getValue());
}
}
}
image.png
性能特性
TreeMap的优势在于能够实现自定义排序功能,但是性能要比HashMap和LinkedHashMap差。它的 containsKey 、get 、 put 、remove 方法的时间复杂度是 log(n)
虽然LinkedHashMap也是有序的,但是LinkedHashMap内元素顺序只和插入顺序有关,无法进行自定义排序
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/190075.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...