当前位置: 首页 > news >正文

TreeMap

由键决定:不重复、无索引、可排序。

可排序:对键进行排序。

TreeMap和TreeSet底层原理一样,均是红黑树结构。

两种排序规则:

1)实现Comparable接口,比较规则(在一个类的上方implenments Comparable).

2)创建集合时传递Comparator比较器对象,指定比较规则。

练习一:

TreeMap基本应用
需求1:键:整数表示id,值:字符串表示商品名称
要求:按照id的降序排列

public class test {public static void main(String [] args) {TreeMap<Integer,String> t=new TreeMap<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}});t.put(1, "可口可乐");t.put(2, "雷碧");t.put(3, "粤利粤");System.out.println(t);}
}

练习二:

统计个数
需求:字符串“aababcabdabcde",请统计字符串中每一个字符出现的次数,并按照以下格式输出输出结果:a (5)b(4)c(3)d(2)e (1)
 

public class test {public static void main(String [] args) {String str="aababcabdabcde";TreeMap<Character, Integer> t=new TreeMap<>();for(int i=0;i<str.length();i++) {char c=str.charAt(i);//获取每一个字符,添加到集合中if(t.containsKey(c)) {//判断字符是否存在//存在int count=t.get(c);//获取键对应的值count++;t.put(c, count);}else {//不存在t.put(c, 1);}}System.out.println(t);//按照格式输出,利用StringBuilderStringBuilder sb=new StringBuilder();//利用遍历进行拼接Set<Character> set=t.keySet();for(Character key:set) {sb.append(key).append("(").append(t.get(key)).append(")");}System.out.println(sb);}
}

相关文章:

  • 第六章 Python-函数基础
  • JS【详解】Map (含Map 和 Object 的区别,Map 的常用 API,Map与Object 的性能对比,Map 的应用场景和不适合的使用场景)
  • mysql 删除重复数据 关联自己 关联子查询 delete
  • 掌握ASPICE标准:汽车软件测试工程师的专业发展路径
  • vue 笔记02
  • C++ | Leetcode C++题解之第117题填充每个节点的下一个右侧节点指针II
  • 大模型中GPTs,Assistants API, 原生API的使用场景?
  • 数据分析中的列与行交换技巧
  • 【Android14 ShellTransitions】(一)开篇
  • 【乐吾乐3D可视化组态编辑器】模型类型与属性
  • IP 分片过程及偏移量计算
  • 多模态大模型:系统、趋势与问题
  • 对于个人而言,大数据时代如何更好地管理自己的信息?
  • Python中使用“import”还是“from ... import”导入模块
  • 双机多网口配置同网段地址,可以通过目的IP确定接收数据的网卡吗?
  • 4. 路由到控制器 - Laravel从零开始教程
  • CentOS 7 修改主机名
  • create-react-app做的留言板
  • CSS 专业技巧
  • javascript面向对象之创建对象
  • JS学习笔记——闭包
  • node.js
  • Redash本地开发环境搭建
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 第十八天-企业应用架构模式-基本模式
  • 技术发展面试
  • 目录与文件属性:编写ls
  • 批量截取pdf文件
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用 Xcode 的 Target 区分开发和生产环境
  • Semaphore
  • 我们雇佣了一只大猴子...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ######## golang各章节终篇索引 ########
  • #Lua:Lua调用C++生成的DLL库
  • (C语言)球球大作战
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (八)Flink Join 连接
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • *2 echo、printf、mkdir命令的应用
  • .bat批处理出现中文乱码的情况
  • .htaccess配置重写url引擎
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .Net 6.0 Windows平台如何判断当前电脑是否联网
  • .Net CF下精确的计时器
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • /bin/bash^M: bad interpreter: No such file or directory