项目中遇到一个今日贡献和累计贡献,进行分页并根据贡献值进行从大到小的顺序展示。这里面使用到了对实体中的属性进行排序。下面以一个学生实体类来模拟实现根据学生的年龄,从大到小的顺序排序(倒序)。
实现代码:
1、创建Student实体类
package com.shsj.sort;
public class Student {
private String name; //姓名
private int 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 String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
2、实现compare方法进行排序
package com.shsj.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortDemo {
public static void main(String[] args) {
List<Student> stuList = new ArrayList<>();
//创建并添加到stuList第一个学生
Student stu1 = new Student();
stu1.setName("小涂");
stu1.setAge(23);
stuList.add(stu1);
//创建并添加到stuList第二个学生
Student stu2 = new Student();
stu2.setName("小刘");
stu2.setAge(21);
stuList.add(stu2);
//创建并添加到stuList第三个学生
Student stu3 = new Student();
stu3.setName("小王");
stu3.setAge(25);
stuList.add(stu3);
System.out.println("排序前的stuList集合:");
for (Student student : stuList) {
System.out.print(student.getName()+ student.getAge()+" ");
}
//实现Comparator进行排序
Collections.sort(stuList,new Comparator<Object>(){
@Override
public int compare(Object o1, Object o2) {
return ((Student) o2).getAge() - ((Student) o1).getAge();
}
});
System.out.println();
System.out.println("按照年龄降序排序后的stuList集合:");
for (Student student : stuList) {
System.out.print(student.getName()+ student.getAge()+" ");
}
}
}
打印结果:
排序前的stuList集合:
小涂23 小刘21 小王25
按照年龄降序排序后的stuList集合:
小王25 小涂23 小刘21