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 @ 2022-09-08 20:45  Bonnie_ξ  阅读(1952)  评论(0)    收藏  举报