[英]How to sort a list using comparator in Descending order (based on salary which is a long value)
如何使用比較器以降序對列表進行排序(基於薪水(即長值))
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;
}
}
如果您使用的是Java 8,則可以將Stream#sorted與Comparator#comparingLong結合使用,如下所示:
list = list.stream()
.sorted(Comparator.comparingLong(Empl::getSalary).reversed())
.collect(toList());
請注意,使用.reversed()
時,列表將按后代排序,否則,如果不使用它,則按升序排序。
嘗試這個:
降序
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,則可以直接在列表上調用默認的sort方法,以提供必要的比較器。
list.sort(Comparator.comparingLong(Empl::getSalary).reversed());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.