/**
* 返回负数,第一个元素排在第二个元素前面;
* 返回0,第二个元素等于第一个元素;
* 返回正数,第一个元素排在第二个元素后面;
* 下面代码为降序排列比较规则
*/
public class Student implements Comparable<Student>{
private String name;
private Integer age;
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
public Student() {
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
/**
* 需要实现的方法,实现升序排序,降序请反写
* this表示当前的对象
* @param o 比较时传入的对象
* @return
*/
@Override
public int compareTo(Student o) {
/**
* 返回负数,第一个元素排在第二个元素前面;
* 返回0,第二个元素等于第一个元素;
* 返回正数,第一个元素排在第二个元素后面;
*/
return this.age-o.age;
}
}
public class Test {
public static void main(String[] args) {
//数据准备
List<Student> list = new ArrayList<>();
list.add(new Student("小明",1));
list.add(new Student("小红",4));
list.add(new Student("小刚",3));
list.add(new Student("小鸡",5));
list.add(new Student("小狗",2));
//使用Collections集合工具类进行排序
Collections.sort(list);
for (Student student : list) {
System.out.println(student);
}
}
}
Student{name='小明', age=1}
Student{name='小狗', age=2}
Student{name='小刚', age=3}
Student{name='小红', age=4}
Student{name='小鸡', age=5}
public class Test {
public static void main(String[] args) {
//数据准备
List<Student> list = new ArrayList<>();
list.add(new Student("小明",1));
list.add(new Student("小红",4));
list.add(new Student("小刚",3));
list.add(new Student("小鸡",5));
list.add(new Student("小狗",2));
//使用Collections集合工具类进行排序
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
//升序排序,降序反写
return o1.getAge()-o2.getAge();
}
});
for (Student student : list) {
System.out.println(student);
}
}
}
Student{name='小明', age=1}
Student{name='小狗', age=2}
Student{name='小刚', age=3}
Student{name='小红', age=4}
Student{name='小鸡', age=5}
Lambda表达式
Collections.sort(list, (o1, o2) -> o1.getAge() - o2.getAge());
list.sort(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge()-o2.getAge();
}
});
list.sort((o1, o2) -> o1.getAge()-o2.getAge());
使用Stream流
List<Student> students = list.stream().
sorted((Comparator.comparingInt(Student::getAge)))
.collect(Collectors.toList());
网友评论