写一个排序
有一个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()));