Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用对象的值连续两次对对象数组进行排序_Java_Arrays_Sorting_Object - Fatal编程技术网

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

Java 如何使用对象的值连续两次对对象数组进行排序,java,arrays,sorting,object,Java,Arrays,Sorting,Object,我有一个对象数组。每个对象都有两个关联的适应值。我想先使用一个适应值对数组进行排序,然后进行一些计算。然后使用“其他适应值”字段对其再次排序。我尝试使用compareTo()方法,但我只能使用一个字段对其进行排序。建议:使用谷歌番石榴并进行复合排序 new Ordering<X>() { public int compare(X x1, X x2) { return ComparisonChain.start() .compare(x1.stringValue

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

建议:使用谷歌番石榴并进行复合排序

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);
newordering(){
公共整数比较(X x1,X x2){
返回ComparisonChain.start()
.比较(x1.stringValue,x2.stringValue)
.compare(x2.dateValue,x1.dateValue)//按相反顺序翻转
.result();
}
}.immutableSortedCopy(listOfXs);
在两个比较之间,您可以调用另一个方法进行计算。

我建议使用一种变异因子

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;
    }
接口突变{
无效申请(T主题);
}

Collectionyou需要使用2个不同的自定义比较器。将比较器设计为动态获取要执行比较的属性。是否需要2个不同的排序列表?或者您希望按一个标准排序,并使用第二个标准对根据第一个标准等效的对象进行排序?