Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Sorting_Type 2 Dimension - Fatal编程技术网

Java 对二维数组排序

Java 对二维数组排序,java,sorting,type-2-dimension,Java,Sorting,Type 2 Dimension,我有一个二维双数组,我想根据第二列对它进行排序。我写了这段代码,但在最后一行“double can can can Dereference”中出现了这个错误。它似乎适用于字符串,但不适用于数组。谢谢你的帮助 import java.util.Arrays; import java.util.Comparator; public class Sort { public static void main(String args[]){ //Array to sort

我有一个二维双数组,我想根据第二列对它进行排序。我写了这段代码,但在最后一行“double can can can Dereference”中出现了这个错误。它似乎适用于字符串,但不适用于数组。谢谢你的帮助

import java.util.Arrays;
import java.util.Comparator;

public class Sort { 
    public static void main(String args[]){
        //Array to sort
        double[][] X = new double[][]{
                {1.2,2,1,3.1},
                {1,2.7,3.3},
                {1,2.3,3.1},
                {1.5,3.2,2.4};

        //Sort the array by column 2
        Arrays.sort(X, new ColumnComparator(2));
    }
}


//Class that extends Comparator
class ColumnComparator implements Comparator {
    int columnToSort;
    ColumnComparator(int columnToSort) {
        this.columnToSort = columnToSort;
    }
//overriding compare method
    public int compare(Object o1, Object o2) {
        double[] row1 = (double[]) o1;
    double[] row2 = (double[]) o2;
    //compare the columns to sort
    return row1[columnToSort].compareTo(row2[columnToSort]);
}

我想您在编写的代码中忘记了在比较器中切换回double。。。(我的意思是,正如你所说,你试过使用String,但它奏效了,我想这就是为什么仍然存在一些奇怪的String[]显然不应该存在的原因)

如果我假设我应该读double[]row1=(double[])o1,那么问题是您不能在double上调用.compareTo。您应该只减去这些值

公共类secondColumnParator实现Comparator{
public class SecondColumnComparator implements Comparator<double[]> {
    @Override
    public int compare(double[] row1, double[] row2) {
        return Double.compare(row1[1], row2[1]);
        // or, before Java 7:
        // return Double.valueOf(row1[1]).compareTo(Double.valueOf(row2[1]));
    }    
}
@凌驾 公共整数比较(双[]行1,双[]行2){ 返回Double.compare(第1行[1],第2行[1]); //或者,在Java 7之前: //返回Double.valueOf(第1[1]行)compareTo(Double.valueOf(第2[1]行)); } }
你说得对。最后一行。我看到您编辑后切换回double[],这意味着我猜对了。正如我所说的,只需返回第1行[columnToSort]-第2行[columnToSort]