我有一个对象数组。每个对象都有两个健身值。我想首先使用一个适应值对数组进行排序,然后进行一些计算。然后使用其他适合度值字段再次对其进行排序。我尝试使用compareTo()
方法,但我只能使用一个字段对其进行排序。
答案 0 :(得分:0)
建议:使用Google Guava并进行复合排序
new Ordering<X>() {
public int compare(X x1, X x2) {
return ComparisonChain.start()
.compare(x1.stringValue, x2.stringValue)
.compare(x2.dateValue, x1.dateValue) // flipped for reverse order
.result();
}
}.immutableSortedCopy(listOfXs);
在两个比较之间,您可以调用另一种方法进行计算。
我建议使用Mutator
interface Mutation<T> {
void apply(T subject);
}
<T> Collection<? extends T> mutate(Collection<? extends T> input, Mutation<? super T> mutation) {
for (T element : input) {
mutation.apply(element);
}
return input;
}