[英]How to sort a list using comparator in Descending order (based on salary which is a long value)
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;
}
}
If you are using Java 8 you can use Stream#sorted with Comparator#comparingLong like this : 如果您使用的是Java 8,则可以将Stream#sorted与Comparator#comparingLong结合使用,如下所示:
list = list.stream()
.sorted(Comparator.comparingLong(Empl::getSalary).reversed())
.collect(toList());
Note the .reversed()
when you use it the list is sorted descendant, else if you don't use it, it is sorted ascendant. 请注意,使用.reversed()
时,列表将按后代排序,否则,如果不使用它,则按升序排序。
Try this: 尝试这个:
Descending 降序
Collections.sort(modelList, new Comparator<Empl>() {
@Override
public int compare(Empl o1, Empl o2) {
return o2.getSalary().compareTo(o1.getSalary());
}
});
Ascending 上升
Collections.sort(modelList, new Comparator<Empl>() {
@Override
public int compare(Empl o1, Empl o2) {
return o1.getSalary().compareTo(o2.getSalary());
}
});
Use this way 用这种方式
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.