Java8按照多字段排序
package com.shiyi.love.task;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author shiyi on 2022/3/18 14:09
*/
@Data
@AllArgsConstructor
public class Person {
private String name;
private int age;
public static void main(String[] args) {
ArrayList<Person> list = new ArrayList<>();
Person a = new Person("a", 50);
Person b = new Person("b", 60);
Person c = new Person("c", 70);
Person d = new Person("d", 70);
list.add(a);
list.add(b);
list.add(c);
list.add(d);
System.out.println("排序前:" + list);
List<Person> asc = list.stream()
.sorted(Comparator.comparing(Person::getAge)
.thenComparing(Person::getName)).collect(Collectors.toList());
/*
* 先按年龄排序,再按姓名排序(升序)
*/
System.out.println("升序排序:" + asc);
List<Person> desc = list.stream()
.sorted(Comparator.comparing(Person::getAge)
.thenComparing(Person::getName).reversed()).collect(Collectors.toList());
/*
* 先按年龄排序,再按姓名排序(降序)
*/
System.out.println("降序排序:" + desc);
}
}