红黑树简

news/2025/11/7 12:27:54/文章来源:https://www.cnblogs.com/laipizhen/p/19199314
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.mzph.cn/news/958727.shtml

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

相关文章

⸢ 柒-Ⅲ⸥⤳ 可信纵深防御建设方案:数据使用可信端安全可信 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【日记】我从来没见过有酒店这么设计的(533 字)

正文出差结束,终于回家了。回到自己的小房间之后,仔仔细细想了一下,发现自己有好多事情都没做。屯了好多经济学的文章没有看、内科学的笔记、买菜、写文章(日记、学海计划、实用类随记、计算机指南,今年的年度总结…

第181-182天:横向移动篇PTH哈希PTT票据PTK密匙Kerberoast攻击点TGTNTLM爆破

首要知识点: pass the hash(哈希传递攻击,简称pth) pass the ticket(票据传递攻击,简称ptt) pass the key(密钥传递攻击,简称ptk) PTH(pass the hash) #利用的lm或ntlm的值进行的渗透测试(NTLM认证攻击)…

2025年上海装修设计标杆公司最新推荐:中古风装修/轻法式装修/现代简约装修/极简风装修、上海千祥建筑定义品质居住新标准

随着城市化进程深化及居民对居住品质要求的提升,家装行业正经历从基础施工向设计美学、环保健康与全程服务一体化的转型。2025年,装修需求预计进一步释放,但市场上装修公司设计水平、施工质量、材料环保标准及售后服…

AI在开源情报搜集系统中的应用汇总

大模型在开源情报系统中的应用已贯穿采集、处理、分析、决策全链条,形成了一个从“数据获取”到“认知生成”的智能闭环。上述功能体系不仅提升了情报工作的效率与深度,更推动了情报模式从“被动检索”向“主动洞察”…

清理docker的overlay2目录

使用Docker时,镜像和容器数据都存储在Docker的存储目录中,默认是/var/lib/docker。在Docker使用overlay2存储驱动时,/var/lib/docker/overlay2目录包含了overlay2存储驱动所使用的文件和目录。 overlay2是Docker的一…

升鲜宝生鲜配送供应链管理系统---PMS--商品品牌多语言存储与 Redis 缓存同步实现

升鲜宝生鲜配送供应链管理系统---PMS--商品品牌多语言存储与 Redis 缓存同步实现 商品品牌多语言存储与 Redis 缓存同步实现文档 本设计文档说明商品品牌(pms_brand)在支持多语言环境下的数据存储、翻译同步及 Redis…

网站在苹果 Safari 进行适配遇到的问题

在网站进行移动端 Web 适配开发中,弹窗和导航栏弹出等常常会出现一些问题,如果是奇奇怪怪的客户严格要求的话,那么就会有下面这些情况:打开弹窗后页面自动放大,视图区被放大到看不全 打开对话框打开后背景仍然能滚…

Python对象模型的认知陷阱:类的`__name__`属性与名字绑定的本质辨析

Python对象模型的认知陷阱:类的__name__属性与名字绑定的本质辨析 摘要:本文通过一个典型的元类使用错误,深入剖析Python对象模型中“类的名称属性”与“名字绑定”这两个常被混淆的核心概念。许多开发者在动态创建…

Python环境教程(三)-环境高级之uv pixi

UV 官网:uv 中文文档 Github地址:astral-sh/uv: An extremely fast Python package and project manager, written in Rust. 什么是uv? uv 是由 Astral 公司开发的一款 Rust 编写的 Python 包管理器和环境管理器,它…

升鲜宝生鲜配送供应链管理系统---PMS 商品模块 + 动态翻译设计说明

PMS 商品模块 + 动态翻译设计说明书 一、模块总体定位 PMS(Product Master System)是供应链体系的商品主数据中心,负责统一维护商品的品牌、分类、标签、单位、材质、存储方式、分拣区域、SPU、SKU 及多语言翻译。 …

深入浅出 SPA/MPA

概述 在 Web 应用架构设计中,单页应用(SPA)与多页应用(MPA)是目前两种主流的前端架构,他们各自适用于不同的业务场景。 作为一个前端开发,理解这两种模式的核心原理、技术实现及优劣势,对于我们未来选择合适的…

CPP 学习笔记 语法总结 - 阿源

CPP 学习笔记秋招的时候(嵌入式方向)面试官常问到 C++,因此花了几天过了一下基础知识,本文为学习笔记。快速学习的经验:如果有其他语言基础的情况下,想要学习一门新语言,让 AI 帮你列一下这个语言的学习大纲或者…

2025 11 7

p3199考虑二分,然后判负环一个分数规划的基础应用第21场T1,从后往前贪心 15min T2,对a整除分块,后面的那个 b 有点难搞,但是设 \(\frac{i}{j}\) 下取整的值为 \(a\) 可以发现这个可以在 \(b\) 数组中体现为 \(b_0…

深入解析:大数据集群环境搭建(Ubantu)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Unity Shader 入门教程:从零开始编写你的第一个 Shader

光照模型是 Shader 编程的核心部分,它决定了物体表面如何与光线交互,从而影响最终的视觉效果。在 Unity 中,常见的光照模型包括 Lambert 漫反射模型、Phong 高光反射模型 和 Blinn-Phong 模型。 本文将详细介绍这些…

中电金信​​:「AI智变」这个AI自动化工厂,助力模型高质效落地

智能化时代,AI如同“超级大脑” 能洞察趋势、提效流程、优化决策 但在实际部署中 它却常常像“孤岛上的天才” 能力很强,却难以落地某企业AI研发部门 临近模型产品交付上线 👇👇👇你们缺少的是一座“AI自动化工…

实用指南:Linux内核架构浅谈2- Linux内核与硬件交互的底层逻辑:硬件抽象层的作用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年有机纯驼奶粉加工厂权威推荐榜单:初乳配方驼乳粉/全脂羊奶粉/绵羊奶粉源头厂家精选

随着健康消费理念的普及,驼奶作为营养价值较高的乳制品之一,近年来受到越来越多消费者的关注。全球驼奶市场规模预计从2023年的102.3亿美元增长至2033年的187.2亿美元,年复合增长率约为6.2%。在这一增长趋势下,有机…

2025年网络安全法要求下,主流项目管理工具如何选

在2025年《网络安全法》修订案正式落地的背景下,数据安全合规已成为企业选型项目管理工具的“生死线”——新规将关键信息基础设施运营者违规罚款上限提至1000万元,数据泄露等严重后果的处罚力度较此前提升10倍。本文…