我有一个对象列表,我想使用两个属性对其进行排序。我已经在互联网上搜索过,并且在Java 8中找到了该解决方案。
class ClassA {
String var2;
String var1;
// getters and setters
}
List<classA> list;
list.sort(Comparator.comparing(ClassA::getVar1).thenComparing(ClassA::getVar2));
这绝对可以正常工作,但是我想要对var2使用降序排序,对var1使用升序排序。
答案 0 :(得分:5)
就像添加reversed
...
list.sort(Comparator.comparing(ClassA::getVar1)
.thenComparing(Comparator.comparing(ClassA::getVar2).reversed()));
答案 1 :(得分:0)
您需要实现Comparable接口。
像这样的
class A implements Comparable{
@Override public int compareTo(A anObjectA) {
if (this == anObjectA) return 0;
int ret = var2.compareTo(anObjectA.var2);
if(ret == 0)
...
}
}
答案 2 :(得分:0)
您可以利用java可比接口。这样的事情可能会起作用:
import java.util.*;
class classAComparator implements Comparator{
public int compareTo(classA a,classA b){
int res = a.var2.compareTo(b.var2);
if(res == 0) { //var2 was the same
//compare using var1 in descending order
}
return res;
}
您可以通过运行list.sort(new classAComparator())