当前位置: 首页 > 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.jsqmd.com/news/34157/

相关文章:

  • ⸢ 柒-Ⅲ⸥⤳ 可信纵深防御建设方案:数据使用可信端安全可信 - 详解
  • 【日记】我从来没见过有酒店这么设计的(533 字)
  • 第181-182天:横向移动篇PTH哈希PTT票据PTK密匙Kerberoast攻击点TGTNTLM爆破
  • 2025年上海装修设计标杆公司最新推荐:中古风装修/轻法式装修/现代简约装修/极简风装修、上海千祥建筑定义品质居住新标准
  • AI在开源情报搜集系统中的应用汇总
  • 清理docker的overlay2目录
  • 升鲜宝生鲜配送供应链管理系统---PMS--商品品牌多语言存储与 Redis 缓存同步实现
  • 网站在苹果 Safari 进行适配遇到的问题
  • Python对象模型的认知陷阱:类的`__name__`属性与名字绑定的本质辨析
  • Python环境教程(三)-环境高级之uv pixi
  • 升鲜宝生鲜配送供应链管理系统---PMS 商品模块 + 动态翻译设计说明
  • 深入浅出 SPA/MPA
  • CPP 学习笔记 语法总结 - 阿源
  • 2025 11 7
  • 深入解析:大数据集群环境搭建(Ubantu)
  • Unity Shader 入门教程:从零开始编写你的第一个 Shader
  • 中电金信​​:「AI智变」这个AI自动化工厂,助力模型高质效落地
  • 实用指南:Linux内核架构浅谈2- Linux内核与硬件交互的底层逻辑:硬件抽象层的作用
  • 2025年有机纯驼奶粉加工厂权威推荐榜单:初乳配方驼乳粉/全脂羊奶粉/绵羊奶粉源头厂家精选
  • 2025年网络安全法要求下,主流项目管理工具如何选
  • 转录组基因表达差异分析全流程:以GSE65682为例
  • 英伟达DCGM说明和安装
  • 阿卡德付费文章:让每个普通人的知识,都能变成真金白银
  • Mysql杂志(三十)——索引失效情况 - 指南
  • 84用python命令查看安装了那些库
  • 84用python命令查看安装了那些库
  • 使用NIFI 同步数据库表
  • 2025年尖顶篷房生产厂家权威推荐榜单:球形篷房/多边形篷房/会展篷房源头厂家精选
  • 手把手教你在unity中实现一个视觉小说系统(一)
  • 2025 年 1688 店铺代运营品牌最新推荐排行榜,专业机构实力测评及高性价比选择指南