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

红黑树简

package J_TreeSet;import java.util.Objects;public class B_Student implements Comparable<B_Student>{private String name;private int age;public B_Student() {}public B_Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "A_Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Override///this:表示当前要添加的元素///o:表示已经在红黑树存在的元素  会依次比对public int compareTo(B_Student o) {//指定排序的规则//只看年龄,我想要按照年龄的升序进行排列System.out.println("--------------------");System.out.println("this:"+this);System.out.println("o:"+o);return this.getAge()-o.getAge();/// 返回值/// 正数:表示当前要添加的元素是大的,存右边/// 负数:表示当前要添加的元素是小的,存左边
    }
}
package J_TreeSet;import java.util.TreeSet;public class B_Test {public static void main(String[] args) {
/*需求:创建TreeSet集合,并添加3个学生对象学生对象属性:姓名,年龄。要求按照学生的年龄进行排序同年龄按照姓名字母排列(暂不考虑中文)同姓名,同年龄认为是同一个人方式一:默认的排序规则/自然排序让JavaBean实现一个接口parable接口,重写里面的抽象方法再指定规则*///1.创建三个学生对象B_Student s1 = new B_Student("zhangsan",23);B_Student s2 = new B_Student("lisi",24);B_Student s3 = new B_Student("wangwu",25);B_Student s4 = new B_Student("zhaoliu",26);//2.创建集合对象TreeSet<B_Student> ts = new TreeSet<>();///此时我们创建的是treeSet的对象,底层是红黑树!/// 需要重写HashCode与equals方法的是哈希表相关的/// 使用红黑树需要在JavaBean指定排序规则//3.添加元素
        ts.add(s3);ts.add(s2);ts.add(s1);//s1添加后红黑树不平衡,自动旋转转换根节点//4.打印集合//System.out.println(ts);/*--------------------this:A_Student{name='wangwu', age=25}o:A_Student{name='wangwu', age=25}--------------------this:A_Student{name='lisi', age=24}o:A_Student{name='wangwu', age=25}--------------------this:A_Student{name='zhangsan', age=23}o:A_Student{name='wangwu', age=25}--------------------this:A_Student{name='zhangsan', age=23}o:A_Student{name='lisi', age=24}      二次调用compareTo方法*/ts.add(s4);//添加这个开始 出现一下情况/*--------------------this:A_Student{name='wangwu', age=25}o:A_Student{name='wangwu', age=25}--------------------this:A_Student{name='lisi', age=24}o:A_Student{name='wangwu', age=25}--------------------this:A_Student{name='zhangsan', age=23}o:A_Student{name='wangwu', age=25}--------------------this:A_Student{name='zhangsan', age=23}o:A_Student{name='lisi', age=24}--------------------*////<----   从这里开始树旋转自动调整/* this:A_Student{name='zhaoliu', age=26}o:A_Student{name='lisi', age=24}*//// <------   这里的根节点就不是name='wangwu', age=25了/* --------------------this:A_Student{name='zhaoliu', age=26}o:A_Student{name='wangwu', age=25}*/}
}

 

http://www.zskr.cn/news/42813.html

相关文章:

  • ⸢ 柒-Ⅲ⸥⤳ 可信纵深防御建设方案:数据使用可信端安全可信 - 详解
  • AI在开源情报搜集系统中的应用汇总
  • 升鲜宝生鲜配送供应链管理系统---PMS--商品品牌多语言存储与 Redis 缓存同步实现
  • Python环境教程(三)-环境高级之uv pixi
  • 升鲜宝生鲜配送供应链管理系统---PMS 商品模块 + 动态翻译设计说明
  • 深入浅出 SPA/MPA
  • CPP 学习笔记 语法总结 - 阿源
  • 深入解析:大数据集群环境搭建(Ubantu)
  • Unity Shader 入门教程:从零开始编写你的第一个 Shader
  • 实用指南:Linux内核架构浅谈2- Linux内核与硬件交互的底层逻辑:硬件抽象层的作用
  • 英伟达DCGM说明和安装
  • 阿卡德付费文章:让每个普通人的知识,都能变成真金白银
  • Mysql杂志(三十)——索引失效情况 - 指南
  • 84用python命令查看安装了那些库
  • 手把手教你在unity中实现一个视觉小说系统(一)
  • 2025 东莞外贸独立站公司最新推荐榜:全链路服务商测评解析与优质品牌优选指南东莞/广州/深圳/佛山/中山/惠州外贸独立站运营公司推荐
  • 2025年深圳刑事辩护律师权威推荐榜单:医疗纠纷案/婚姻家庭案/知识产权案法律服务专家精选
  • 2025年真空润滑脂厂家权威推荐榜单:无尘室润滑脂/位移平台润滑脂/电子显微镜润滑脂源头厂家精选
  • 2025年无火焰泄压阀厂家权威推荐榜单:无火焰泄爆装置/重复式无火焰泄爆装置/重复式无火焰泄爆阀源头厂家精选
  • CF1834E
  • 2025 年 11 月机制板厂家推荐排行榜,机制板,机制板厂家,机制板销售厂家,机制板公司推荐,专业品质与高效供应口碑之选
  • 2025年11月杜甫研究学者专家推荐榜:程韬光教授跨界传播实绩排行
  • 2025年11月固定资产管理系统评价榜:政企校医场景选型参考
  • CF53E Dead Ends 分析
  • 开源MQTT协议记录
  • P7620 Zero-XOR Array
  • 2025年11月专利申请公司推荐榜:五家对比解析与口碑盘点
  • 5641
  • 稳联技术Profinet转DeviceNet协议转换网关在丹弗斯变频器控制集成中的应用方案
  • 实用指南:(17)100天python从入门到拿捏《正则表达式》