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);
    }
}


猜你喜欢

转载自blog.csdn.net/qq_42216791/article/details/123575129
今日推荐