java 有序map_java 有序Map之TreeMap的使用

java 有序map_java 有序Map之TreeMap的使用谦虚使人进步想要了解一个类 就可以从它实现的接口和继承的父类开始 我们可以看到 TreeMap 实现了 java util NavigableMap 接口 NavigableMap 它又继承了排序 Map 接口 java util SortedMap 因此 TreeMap 具有排序能力 其次 TreeMap 实现了 Cloneable 和 Serializable 接口 它也具备克隆和序列化能力 image pngTreeMa

谦虚使人进步

想要了解一个类,就可以从它实现的接口和继承的父类开始。我们可以看到TreeMap实现了java.util.NavigableMap接口,NavigableMap它又继承了排序Map接口 java.util.SortedMap,因此TreeMap具有排序能力;其次,TreeMap实现了Cloneable和Serializable接口,它也具备克隆和序列化能力

3e44614c8876

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));

}

}

}

3e44614c8876

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));

}

}

}

3e44614c8876

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());

}

}

}

3e44614c8876

image.png

性能特性

TreeMap的优势在于能够实现自定义排序功能,但是性能要比HashMap和LinkedHashMap差。它的 containsKey 、get 、 put 、remove 方法的时间复杂度是 log(n)

虽然LinkedHashMap也是有序的,但是LinkedHashMap内元素顺序只和插入顺序有关,无法进行自定义排序

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202985.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:51
下一篇 2026年3月19日 下午10:51


相关推荐

  • ki51单片机流水灯c语言程序,STC89C51单片机流水灯程序

    ki51单片机流水灯c语言程序,STC89C51单片机流水灯程序原标题:STC89C51单片机流水灯程序由于程序花样显示比较复杂,所以完全可以通过查表得方式编写程序,简单。如果想显示不同的花样,只需要改写表中的数据即可。:#include”reg51.h”#defineuintunsignedint#defineucharunsignedcharconsttable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,…

    2022年5月18日
    43
  • windows实现远程关机

    windows实现远程关机1 开启 GUEST 账号 右键桌面 我的电脑 选择 管理 项 进入 本地用户和组 栏 在 用户 项下将 GUEST 用户启用 2 打开控制面板 双击进去 管理工具 双击 本地安全策略 3 在 本地安全策略 左侧单击 本地策略 选定 用户权利指派 项 在其右侧编辑区中找到 在从远端系统强制关机 双击进入编辑状态 添加 GUEST 关闭系统 双击进入编辑状态 添加 GUEST

    2026年3月19日
    2
  • 枚举类型

    枚举类型

    2021年9月16日
    47
  • 腾讯元宝for mac(AI助手) v2.56.0.621 苹果电脑版

    腾讯元宝for mac(AI助手) v2.56.0.621 苹果电脑版

    2026年3月13日
    2
  • C语言 sprintf函数使用详解

    C语言 sprintf函数使用详解srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上~头文件:stdio.h函数功能:格式化字符串,将格式化的数据写入字符串中。函数原型:intsprintf(char*buffer,constchar*format,[argument]…)参数:…

    2022年6月22日
    48
  • 管理会计公式大全

    管理会计公式大全以产品变动生产成本为基础的加成率 加成率 变动生产成本总额 目标利润 固定制造费用 非生产成本 100 价格差异 实际用量 实际价格 实际用量 标准价格 实际用量 实际价格 标准价格 数量差异 实际用量 标准价格 标准用量 标准价格 实际用量 标准用量 标准价格 1 产品价格 单位产品成本 单位产品成本 加成率 单位产品成本 1 加成率 二 加成率的确定以产品总成本为基础的加成率 加成率 成本总额 目标利润 100

    2025年11月24日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号