写一个排序

写一个排序

有一个Employee,省略构造函数,set和get方法。

public class Employee {
    private String name;
    private int age;
    private int location;
    private double salary;

有这样的一个数组。

        Employee[] employees = new Employee[5];
        employees[0] = new Employee("AAA", 23, 120, 1500);
        employees[1] = new Employee("CCC", 22, 130, 1200);
        employees[2] = new Employee("BBB", 22, 120, 1600);
        employees[3] = new Employee("DDDD", 28, 170, 1800);
        employees[4] = new Employee("E", 21, 190, 1200);

如果按照字符串自然排序,可以这样写:

Arrays.sort(employees, Comparator.comparing(Employee::getName));

要按姓名长度比较。
可以这样写

Arrays.sort(employees, (Employee e1, Employee e2) -> e1.getName().length() - e2.getName().length());

或简写为

Arrays.sort(employees, Comparator.comparingInt((Employee e) -> e.getName().length()));

如果姓名长度一样,则按年龄从小到大排序。

Arrays.sort(employees, Comparator.comparingInt((Employee e) -> e.getName().length()).thenComparing(Employee::getAge));

如果年龄一样,则按位置从远到近排序。

Arrays.sort(employees, Comparator.comparingInt((Employee e) -> e.getName().length()).thenComparing(Employee::getAge).thenComparing((Employee e1, Employee e2) -> e2.getLocation() - e1.getLocation()));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值