分类:
Java集合

1、学生类的代码如下
public class Student implements Comparable<Student> {
private String name;
private int chinese;
private int math;
private int english;
public Student() {
}
public Student(String name, int chinese, int math, int english) {
this.name = name;
this.chinese = chinese;
this.math = math;
this.english = english;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getChinese() {
return chinese;
}
public void setChinese(int chinese) {
this.chinese = chinese;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", chinese=" + chinese +
", math=" + math +
", english=" + english +
'}';
}
public int getSum() {
return chinese + math + english;
}
@Override
public int compareTo(Student o) {
//按总分就行排序
int result = this.getSum() - o.getSum();
//次要条件
//如果总分成绩再相同,按语文成绩排序
result = result == 0 ? this.getChinese() - o.getChinese() : result;
//如果语文成绩再相同,按数学成绩排序
result = result == 0 ? this.getMath() - o.getMath() : result;
//如果数学成绩再相同,按英语成绩排序
result = result == 0 ? this.getEnglish() - o.getEnglish() : result;
//如果英语成绩再相同,根据姓名排序
result = result == 0 ? this.getName().compareTo(o.getName()): result;
return result;
}
}2-5、步骤代码如下
public class MyCollection6 {
public static void main(String[] args) {
TreeSet<Student> st = new TreeSet<>();
Student s1 = new Student("dahei", 80, 80, 80);
Student s2 = new Student("erhei", 90, 90, 90);
Student s3 = new Student("xiaohei", 100, 100, 100);
st.add(s1);
st.add(s2);
st.add(s3);
for (Student t : st) {
System.out.println(t);
}
}
}
在此次set的底层原理
它在底层会把这三个对象封装成三个节点,如下图形式
1、在添加节点240时,它会破会红黑规则,原因:根节点必须是黑色。所以要把节点240变为黑色,样式如下图
2、添加节点270的结果如下图
3、添加节点300后,它破坏红黑规则。原因:不能出现两个红色节点相连
解决过程如下
解决依据
其父节点为红色,叔叔节点是黑色
1.将“父节点270”设为“黑色”
2. 将“祖父节点240”设为“红色”
3.以祖父节点为支点进行旋转(是左旋还是右旋要看左右俩边的大小,即左右俩边层数的比较)
结果如下图

评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术