存储学生对象并遍历,创建treeSet集合使用无参构造方法
要求:按年龄大小排序,年龄相同时,按照姓名的字母排序
代码示例
student类,实现Comparable的接口,重写compareTo()方法
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;
}
//重写Comparable接口的方法
@Override
public int compareTo(Student s) {
//return 0;//认为时重复元素,不需要添加
//return 1;//按顺序存储
//return -1;//倒叙存储
//按照年龄大小来排序
//升序排列
int num = this.age - s.age;//前面的age-后面的age,返回一个int型的num
//降序排列
//int num = s.age - this.age;
//年龄相同时,按照按照姓名的字母排序
int num2 = num == 0 ? this.name.compareTo(s.name) : num;
return num2;//如果num大于0,则按顺序,如果num小于0,则反过来排序,每次只排列一次,等于0就重复
}
}
import java.util.TreeSet;
public class TreeSetDemo2 {
public static void main(String[] args) {
//创建集合对象
TreeSet<Student> ts = new TreeSet<Student>();
//创建学生对象
Student s1 = new Student("张三", 18);
Student s2 = new Student("李四", 19);
Student s3 = new Student("王五", 17);
Student s4 = new Student("陈六", 18);
Student s5 = new Student("吴一", 18);
//把学生添加到集合
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());
}
}
}
结论:
1、用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的。
2、自然排序,就是让元素所有的类的实现Comparable的接口,重写compareTo()方法