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