list集合中的对象按照某个属性进行排序
测试类:
class Student{
private String name;
private int age;
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 String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
测试代码:
public class ListSort {
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
Student s1 = new Student("张三",17);
Student s2 = new Student("李四",15);
Student s3 = new Student("王五",18);
Student s4 = new Student("马六",16);
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
System.out.println("排序前:"+list.toString());
//java8之前
/* Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
if(o1.getAge()>o2.getAge()){ //按age排序
return 1;
}else if(o1.getAge()==o2.getAge()){
return 0;
}else{
return -1;
}
}
});
System.out.println("java8之前排序后:"+list.toString());*/
//java8之后
list.sort(Comparator.comparing(Student::getAge));
System.out.println("java8之后排序后:"+list.toString());
}
}
测试结果: