需求:存储学生对象并遍历,创建 TreeSet 集合使用无参构造方法
按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序
创建学生类
package ysy10;
public class Student implements Comparable<Student> {
private String name;
private int age;
public Student() {
}
public 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;
}
@Override
public int compareTo(Student s) {
// return 0; //表示存储的是重复的值,所以只会输出第一个的值
// return 1; //按照存储顺序
// return -1; //按照存储逆序
//按年龄大小升序排序
int num =this.age-s.age;//this--s2,s----s1
//年龄相同时,按照姓名的字母顺序排序
int num2=num==0?this.name.compareTo(s.name):num;
return num2;
//按年龄大小降序排序
// int num =s.age-this.age;//this--s2,s----s1
// return num;
}
}
创建学生对象,并添加到集合中
package ysy10;
import java.util.TreeSet;
public class Demo02 {
public static void main(String[] args) {
//创建集合对象
TreeSet<Student> ts=new TreeSet<Student>();
//创建学生对象
Student s1 =new Student("西施",23);
Student s2 =new Student("貂蝉",25);
Student s3 =new Student("杨玉环",19);
Student s4 =new Student("王昭君",24);
Student s5 =new Student("小鱼",24);
//把学生添加到集合
ts.add(s1);
ts.add(s2);
ts.add(s3);
ts.add(s4);
ts.add(s5);
//遍历集合
for(Student s:ts){
System.out.println(s.getName()+","+s.getAge());
}
}
}
需求:存储学生对象并遍历,创建 TreeSet 集合使用带参构造方法
按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序
把上个代码的无参构造换成以下内容
//创建集合对象
TreeSet<Student> ts=new TreeSet<Student>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
//this.age----s1 s.age---s2
int num =s1.getAge()-s2.getAge();
int num2 =num==0?s1.getName().compareTo(s2.getName()):num;
return num2;
}
});