这里可以运用List.sort排序
@Test
public void sorted(){
@Data
class Person{
private String name;
private int age;
public Person(String name, int age){
this.name=name;
this.age=age;
}
}
List<Person> list = new ArrayList<>();
list.add(new Person("张三",25));
list.add(new Person("李四",20));
list.add(new Person("王五",30));
list.add(new Person("湖北彭于晏",18));
//排序之前
System.out.println("排序之前: "+list);
//根据age字段升序排(写法一:X->X.getAge() 写法二:Person::getAge)
list=list.stream().sorted(Comparator.comparing(X->X.getAge())).collect(Collectors.toList());
System.out.println("升序排序之后: "+list);
//根据age字段降序排
list=list.stream().sorted(Comparator.comparing(Person::getAge).reversed()).collect(Collectors.toList());
System.out.println("降序排序之后(第二种写法): "+list);
}
升序:
第一种写法 使用lambda表达式 :
list.stream().sorted(Comparator.comparing(X->X.getAge())).collect(Collectors.toList())
第二种写法 :
list.stream().sorted(Comparator.comparing(Person::getAge)).collect(Collectors.toList())
降序(.reversed):
第一种写法 使用lambda表达式:
list.stream().sorted(Comparator.comparing(X->X.getAge).reversed()).collect(Collectors.toList());
第二种写法 :
list.stream().sorted(Comparator.comparing(Person::getAge).reversed()).collect(Collectors.toList())
多条件(.thenComparing):
list.stream().sorted(Comparator.comparing(Person::getAge).thenComparing(Comparator.comparing(Person::getScore))).collect(Collectors.toList());