一、TreeSet
首先呢我们要知道TreeSet是集合的一种,它可以进行排序并且可以保证元素唯一;TreeSet排序又分为自然排序和比较器排序,这两种排序方法的使用主要取决于构造方法的使用,无参构造是自然排序,而有参构造是比较器排序。
其次我们要知道TreeSet集合的底层是二叉树结构,同时也是红黑树(红黑树就是一种可以自平衡的二叉树)。
二、小练习
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
//需求:
// 键盘录入五位同学的姓名、语文成绩、数学成绩、英语成绩,并按照总分从高到低排序
//分析:
// A、创建学生类
// B、创建TreeSet集合对象
// C、键盘录入学生姓名、语文成绩、数学成绩、英语成绩
// D、按照总分从高到低排序
public class SetTest {
public static void main(String []args){
TreeSet<Student> ts= new TreeSet<>(new Comparator<Student>(){
@Override
public int compare(Student s1, Student s2){
int sum =s2.getSum()-s1.getSum();
int sum2=sum==0?s1.getChineseGrade()-s2.getChineseGrade():sum;
int sum3=sum2==0?s1.getMathGrade()-s2.getMathGrade():sum2;
int sum4=sum3==0?s1.getEnglishGrade()-s2.getEnglishGrade():sum3;
int sum5=sum4==0?s1.getName().compareTo(s2.getName()):sum4;
return sum5;
}
});
System.out.println("开始录入学生信息");
for(int i=1;i<=5;i++) {
Scanner sc =new Scanner(System.in);
System.out.println("请输入第"+i+"个同学的姓名");
String name=sc.nextLine();
System.out.println("请输入第"+i+"个同学的语文成绩");
int chineseGrade=sc.nextInt();
System.out.println("请输入第"+i+"个同学的数学成绩");
int mathGrade=sc.nextInt();
System.out.println("请输入第"+i+"个同学的英语成绩");
int englishGrade=sc.nextInt();
Student s=new Student();
s.setName(name);
s.setChineseGrade(chineseGrade);
s.setMathGrade(mathGrade);
s.setEnglishGrade(englishGrade);
ts.add(s);
}
System.out.println("学生信息如下(按照成绩从高到低排列)");
System.out.println("姓名\t语文成绩\t数学成绩\t英语成绩");
for(Student s : ts)
System.out.println(s.getName()+"\t"+s.getChineseGrade()+"\t"+s.getMathGrade()+"\t"+s.getEnglishGrade());
}
}
输出:
run:
开始录入学生信息
请输入第1个同学的姓名
ll
请输入第1个同学的语文成绩
90
请输入第1个同学的数学成绩
80
请输入第1个同学的英语成绩
90
请输入第2个同学的姓名
kk
请输入第2个同学的语文成绩
90
请输入第2个同学的数学成绩
79
请输入第2个同学的英语成绩
67
请输入第3个同学的姓名
nn
请输入第3个同学的语文成绩
90
请输入第3个同学的数学成绩
78
请输入第3个同学的英语成绩
69
请输入第4个同学的姓名
hh
请输入第4个同学的语文成绩
67
请输入第4个同学的数学成绩
90
请输入第4个同学的英语成绩
78
请输入第5个同学的姓名
aa
请输入第5个同学的语文成绩
90
请输入第5个同学的数学成绩
90
请输入第5个同学的英语成绩
90
学生信息如下(按照成绩从高到低排列)
姓名 语文成绩 数学成绩 英语成绩
aa 90 90 90
ll 90 80 90
nn 90 78 69
kk 90 79 67
hh 67 90 78
成功构建 (总时间: 47 秒)
总结:
今天的学习就到这啦,我要去看小说了,哈哈哈哈。