Java8按照多字段排序

时间:2025-04-03 08:36:44
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); } }