Java8按某个字段排序

复制代码
public void sorted() {
    EmployDO emp = EmployDO.builder().age("18").name("张小华").sex("男").position("服务员").build();
    EmployDO emp2 = EmployDO.builder().age("20").name("张松月").sex("女").position("服务员").build();
    EmployDO emp3 = EmployDO.builder().age("30").name("李桂芝").sex("女").position("服务员").build();
    EmployDO emp4 = EmployDO.builder().age("26").name("宋倩").sex("女").position("服务员").build();
    EmployDO emp5 = EmployDO.builder().age("12").name("徐盛").sex("男").position("服务员").build();
    List<EmployDO> employDOList = Arrays.asList(emp, emp2, emp3, emp4, emp5);
    // 升序
    employDOList.stream().sorted(Comparator.comparing(EmployDO::getAge)).collect(Collectors.toList())
            .forEach(s -> System.out.print(s.getName() + "  "));
    System.out.println("      ");
    // 降序
    employDOList.stream().sorted(Comparator.comparing(EmployDO::getAge).reversed())
            .forEach(s -> System.out.print(s.getName() + "  "));

}
复制代码
复制代码
public class Employee {

    private int id;
    private String name;
    private int age;
    private double salary;
    private Status status;

    public enum Status {
        FREE, BUSY, VOCATION;
    }
}
复制代码
复制代码
List<Employee> emps = Arrays.asList(
        new Employee(102, "李四", 59, 6666.66),
        new Employee(101, "张三", 18, 9999.99),
        new Employee(103, "王五", 28, 3333.33),
        new Employee(104, "赵六", 8, 7777.77),
        new Employee(104, "赵六", 8, 7777.77),
        new Employee(104, "赵六", 8, 7777.77),
        new Employee(105, "田七", 38, 5555.55)
);
复制代码
复制代码
    /*
        sorted()——自然排序
        sorted(Comparator com)——定制排序
     */
    @Test
    public void test2(){
        emps.stream()
            .map(Employee::getName)
            .sorted()
            .forEach(System.out::println);
        
        System.out.println("------------------------------------");
        
        emps.stream()
            .sorted((x, y) -> {
                if(x.getAge() == y.getAge()){
                    return x.getName().compareTo(y.getName());
                }else{
                    return Integer.compare(x.getAge(), y.getAge());
                }
            }).forEach(System.out::println);
    }
复制代码
resources.sort(Comparator.comparing(Resource::getCreateDate,Comparator.nullsLast(Date::compareTo)));
Collections.sort(emps, (e1, e2) -> {
    if (e1.getAge() == e2.getAge()){
        return e1.getName().compareTo(e2.getName());
    } else {
        return Integer.compare(e1.getAge(), e2.getAge());
    }
});

 

 

 

posted @   Bonnie_ξ  阅读(1919)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
历史上的今天:
2021-09-08 js checkbox
点击右上角即可分享
微信分享提示