java8 List多条件排序

package com.zhangpengfei.demo;

import org.assertj.core.util.Lists;

import java.util.*;
import java.util.function.*;
import java.util.stream.Collectors;

/**
 * ClassName: <br/>
 * date: 2020/9/15 10:24<br/>
 *
 * @author zhangpengfei <br/>
 * @since JDK 1.8
 */
public class Test {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.setNo(1);
        s1.setName("张三");
        s1.setAge(18);
        s1.setAddress("北京");
        Student s2 = new Student();
        s2.setNo(2);
        s2.setName("李四");
        s2.setAge(14);
        s2.setAddress("上海");
        Student s3 = new Student();
        s3.setNo(4);
        s3.setName("王五");
        s3.setAge(17);
        s3.setAddress("深圳");
        Student s4 = new Student();
        s4.setNo(3);
        s4.setName("赵六");
        s4.setAge(17);
        s4.setAddress("广州");
        List<Student> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        List<Student> collect1 = list.stream()
                .sorted(Comparator.comparing(Student::getAge).thenComparing(Student::getNo))
                .collect(Collectors.toList());
        System.out.println("正序:" + collect1);
        System.out.println("============================");
        List<Student> collect2 = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());
        System.out.println("倒序:" + collect2);
        System.out.println("============================");
    }
}


class Student {
    private int No;
    private String name;
    private int age;
    private String address;

    public int getNo() {
        return No;
    }

    public void setNo(int no) {
        No = no;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Student{" +
                "No=" + No +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

 输出结果:

[Student{No=2, name='李四', age=14, address='上海'}, Student{No=3, name='赵六', age=17, address='广州'}, Student{No=4, name='王五', age=17, address='深圳'}, Student{No=1, name='张三', age=18, address='北京'}]
============================
[Student{No=1, name='张三', age=18, address='北京'}, Student{No=4, name='王五', age=17, address='深圳'}, Student{No=3, name='赵六', age=17, address='广州'}, Student{No=2, name='李四', age=14, address='上海'}]

 

posted @ 2020-09-15 11:01  北京打工人  阅读(2261)  评论(0编辑  收藏  举报