我有一个对象列表,我想使用两个属性对其进行排序。 我在互联网上搜索过,我在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 上的升序排序。
就像添加一个reversed
一样简单...
list.sort(Comparator.comparing(ClassA::getVar1)
.thenComparing(Comparator.comparing(ClassA::getVar2).reversed()));
您需要实现 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)
...
}
}
你可以使用 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())
来使用它