Java集合—TreeSet和TreeMap

一、TreeSet

1.当使用无参构造器,创建TreeSet时,仍然是无序的。
2.若希望添加的元素有序,需要使用TreeSet提供的构造器,传入一个比较器。
该比较器是一个接口,里面有一个方法叫compare(),传入一个实现该接口的类(匿名内部类)
而且可见,TreeSet构造器在底层其实是new一个TreeMap()
底层:
add():
调用底层TreeMap的put()方法

二、TreeMap

    底层为红黑树
源码:
构造器:
无参:
直接将comparator置为null。
有参:
参数为实现Comparator接口的类:
put:
如果root为null,即第一次加入,则直接加入
否则,将comparater赋值给cpr
若cpr不为空,则:
根据compare()进行判断,若等于0,则重新设置value,并返回旧值。
若cpr为空,则:
key为null,则抛出异常
key不为null,则采用默认的比较方法,
先将key转变成Comparable对象,如果Key实现了该对象,则可以转,String、包装类等都有实现该接口。
没有实现则会报错。
然后执行Key对象自身的compareTo()函数。
例如,两个String进行比较则调用String的compare()方法。
若两个key无法比较则会报错
然后设置改该节点为对应的左子树或右子树
再然后调用fixAfterInsertion()方法就是对这棵树进行调整、平衡。
最后size++    modCount++
compare:
       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/335239.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux文件管理

Linux系统中,文件以树状图形式存储,即单根文件系统,以用户为分支分别存储文件。 文件操作 相对路径表示方法,.当前目录,..上层目录,~家目录,也可以使用绝对路径/的表示方法,其他常…

面试问到Spring中的@Autowired注解,可以这样答

前言 在Spring框架中,依赖注入是一个核心概念,它允许将一个对象的依赖关系外部化并由Spring容器来管理。Autowired注解是实现这一点的关键工具之一。当然,这块知识也是面试官们老生常谈的问题。 下面就跟着博主的步伐,一起来探讨…

动手学深度学习24 AlexNet

动手学深度学习24 AlexNet 1. AlexNet传统机器学习AlexNet 2. 代码3. QA 1. AlexNet 传统机器学习 AlexNet AlexNet & LeNet对比 加了三层隐藏层,通道数和全连接层单元数更多 计算需要的浮点数,10亿次浮点数计算。 2. 代码 import torch fro…

【信息学奥赛】两个整型变量的值交换

【信息学奥赛】两个整型变量的值交换 💖The Begin💖点点关注,收藏不迷路💖 编写如下一个函数,用于将两个整型变量的值交换 输入: 两个数 输出: 交换后的两个数 样例输入: 3 2样…

HTTPS单双向认证流程详解与联想

HTTPS单向认证 HTTPS在单向认证传输的过程中会涉及到三个密钥: 服务端的公钥和私钥,用来进行非对称加密交换密钥 客户端生成的随机密钥,用来进行对称加密传输数据 认证过程 1.客户端向服务器发起HTTPS请求,连接到服务器的443端…

【算法】位运算算法——两整数之和

题解:两整数之和(位运算算法) 目录 1.题目2.位运算算法3.参考代码4.总结 1.题目 题目链接:LINK 2.位运算算法 这个题目难点就在于不能用、- 那什么能够代替加号呢? 既然数的层面不能用号,那二进制的角度去用号即可。 恰好&a…

2024年学浪视频怎么录屏

由于学浪最新版PC学生版客户端已经有防止录屏,而且录屏效率太慢,本文将介绍你一种高效率的工具,小浪助手.exe,它可以很轻松的将你的学浪视频下载下来 学浪下载工具我已经打包好了,有需要的自己下载一下 注意&#xf…

福建聚鼎科技:装饰画生意到底有没有前景

在当今社会,随着人们生活水平的提高和审美需求的多样化,家居装饰行业迎来了新的发展机遇。装饰画作为家居装饰的重要组成部分,其市场前景备受关注。那么,装饰画生意到底有没有前景呢? 从市场需求的角度来看,装饰画市场…

服务器数据恢复—异常断电导致ESXi虚拟机无法启动的数据恢复案例

服务器数据恢复环境: 某大厂PS4000服务器,服务器上部署VMware ESXi虚拟化平台。 服务器故障: 机房断电,重启后服务器中的某台虚拟机不能正常启动。管理员查看虚拟机配置文件,发现无法启动的虚拟机的配置文件除了磁盘文…

Django序列化器中validate没起作用?validate的触发时机

今天上班的时候分配了一个任务,是修复前端的一个提示优化,如下图所示: 按照以往的经验我以为可以直接在validate上进行校验,如何抛出一个异常即可 ,例如: class CcmSerializer(serializers.ModelSerialize…

第十四届蓝桥杯c++研究生组

A 关键思路是求每个十进制数的数字以及怎么在一个数组中让判断所有的数字次数相等。 求每个十进制的数字 while(n!0){int x n%10;//x获取了n的每一个位数字n/10;}扩展:求二进制的每位数字 (注意:进制转换、1的个数、位运算) x…

【源码】2024完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城

后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 前端UNIAPP 后端PHP 一键部署版本 获取方式: 微:uucodes

Vue2+Element 封装评论+表情功能

有需要的小伙伴直接拿代码即可&#xff0c;不需要下载依赖。 评论组件如下&#xff1a; 创建 comment.vue 文件。 表情组件 VueEmoji.vue 在评论组件中使用。 <template><div class"comment"><div class"flex_box"><h2>评论 {…

香橙派AIpro开发板初体验

香橙派AIpro开发板初体验 一、引言 在当前的AI发展浪潮中&#xff0c;边缘计算逐渐成为了研究的热点。香橙派AIpro开发板作为一款基于昇腾AI技术的开发板&#xff0c;凭借其强大的算力和丰富的接口&#xff0c;为AI边缘计算提供了强大的支持。最近&#xff0c;我也是拿到了官…

男士内裤哪种款式舒服?五条实用技巧让你轻松挑选

对于很多男生来说&#xff0c;依然很难挑到真正舒适的内裤。比如卡臀卡裆&#xff0c;走路时不时还得提拉一下&#xff0c;真的很尴尬。又紧又闷的内裤&#xff01;尤其是炎热的夏天&#xff0c;黏糊糊的贼难受&#xff01;到底有没有一款舒适透气男士内裤呢&#xff1f;那今天…

Kafka之【生产消息】

消息&#xff08;Record&#xff09; 在kafka中传递的数据我们称之为消息&#xff08;message&#xff09;或记录(record)&#xff0c;所以Kafka发送数据前&#xff0c;需要将待发送的数据封装为指定的数据模型&#xff1a; 相关属性必须在构建数据模型时指定&#xff0c;其中…

【YOLOv10】使用yolov10训练自己的数据集/验证 /推理 /导出模型/ONNX模型的使用

YOLOv10: 实时端到端的目标检测。 性能 YOLOv10比最先进的YOLOv9延迟时间更低&#xff0c;测试结果可以与YOLOv9媲美&#xff0c;可能会成为YOLO系列模型部署的“新选择”。 目录 1 数据准备 2 配置文件 3 训练 4 验证 5 预测 6 导出模型 7 ONNX模型的使用 官方论文地址…

ubuntu下载离线软件包及依赖

目录 一、前言 二、正文 1.准备环境 2.开始下载 3.后续工作 三、总结 一、前言 由于给客户提供的设备机不允许上网&#xff0c;那么所有待安装的软件包及依赖库都需要提前下载好&#xff0c;然后通过局域网传过去再安装。 另外&#xff0c;软件包可能还依赖其他的库&…

如何利用Firebase Hosting来托管网站

文章目录 如何利用Firebase Hosting来托管网站前提条件详细步骤1. 安装 Firebase CLI2. 登录 Firebase3. 初始化 Firebase 项目4. 准备网站文件5. 部署到 Firebase6. 配置自定义域名&#xff08;可选&#xff09; 常见问题 如何利用Firebase Hosting来托管网站 以下是更详细的…

解决git status提示error bad signature 0x00000000

问题描述&#xff1a; 操作git的时候电脑卡了&#xff0c;重启电脑后git status就提示bad signature 0x00000000&#xff0c;index file corrupt错误&#xff0c;如下&#xff1a; 解决办法&#xff1a; rm -f .git/index git reset