//存储学生对象并遍历,创建集合使用无参构造方法 //要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序
构造学生对象
import java.util.Objects;
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;
int num2 = num == 0 ? this.name.compareTo(s.name) : num;
return num2;
}
}
TreeSet自然排序Comparable的实现
import java.util.TreeSet;
public class TreeSetDemo02 {
public static void main(String[] args) {
//创建集合对象
TreeSet<Student> tree = new TreeSet<>();
//创建学生对象
Student s1 = new Student("西施", 16);
Student s2 = new Student("貂蝉", 14);
Student s3 = new Student("王昭君", 17);
Student s4 = new Student("杨玉环", 18);
Student s5 = new Student("王乐乐", 18);
Student s6 = new Student("王乐乐", 18);//保证元素的唯一性
//把学生类添加到集合
tree.add(s1);
tree.add(s2);
tree.add(s3);
tree.add(s4);
tree.add(s5);
tree.add(s6);
//遍历集合(增强for)
for (Student i : tree) {
System.out.println(i.getName() + "," + i.getAge());
}
}
}
运行结果
貂蝉,14
西施,16
王昭君,17
杨玉环,18
王乐乐,18
进程已结束,退出代码为 0
结论:用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序
自然排序,就是让元素所属的类实现Comparable接口,重写compareTO(To)方法