如何使用对象的值连续两次对对象数组进行排序

时间:2014-05-31 06:59:37

标签: java arrays sorting object

我有一个对象数组。每个对象都有两个健身值。我想首先使用一个适应值对数组进行排序,然后进行一些计算。然后使用其他适合度值字段再次对其进行排序。我尝试使用compareTo()方法,但我只能使用一个字段对其进行排序。

1 个答案:

答案 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;
    }