如何使用比较器按降序对列表进行排序(基于薪水,这是一个长值)

How to sort a list using comparator in Descending order (based on salary which is a long value)

如何使用比较器按降序对列表进行排序(基于 long 值的工资)


class Empl{

    private String name;
    private long salary;

    public Empl(String n, long s){
        this.name = n;
        this.salary = s;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public long getSalary() {
        return salary;
    }
    public void setSalary(long salary) {
        this.salary = salary;
    }

}

试试这个:

降序

Collections.sort(modelList, new Comparator<Empl>() {
        @Override
        public int compare(Empl o1, Empl o2) {
            return o2.getSalary().compareTo(o1.getSalary());
        }
});

升序

Collections.sort(modelList, new Comparator<Empl>() {
            @Override
            public int compare(Empl o1, Empl o2) {
                return o1.getSalary().compareTo(o2.getSalary());
            }
});

这样使用

Collections.sort(employeeList, new Comparator<VariationsItem>() {
    @Override
    public int compare(Empl lhs, Empl rhs) {
        return ((Long) rhs.getSalary()).compareTo((Long) lhs.getSalary());
    }
});

如果您使用的是 Java 8,您可以像这样使用 Stream#sorted with Comparator#comparingLong :

list = list.stream()
        .sorted(Comparator.comparingLong(Empl::getSalary).reversed())
        .collect(toList());

注意 .reversed() 当您使用它时,列表按后代排序,否则如果您不使用它,它按上升排序。

如果您使用 Java-8,那么您可以直接在提供必要比较器的列表上调用默认排序方法。

list.sort(Comparator.comparingLong(Empl::getSalary).reversed());