簡體   English   中英

對二維數組進行排序

[英]Sort a 2-dimensional array

我有一個二維雙數組,我想根據第二列對它進行排序。 我寫了這段代碼,但是我在最后一行得到了這個錯誤“double不能被解除引用”。 它似乎適用於字符串,但不適用於數組。 任何幫助贊賞。

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]);
}

我想你忘記了,在你編寫的代碼中,在你的比較器中切換回雙倍...(我的意思是,正如你所說的嘗試使用String並且它有效,我想這就是為什么還有一些奇怪的String []顯然不應該在那里)

如果我假設我應該讀取double [] row1 =(double [])o1,那么問題是你不能在double上調用.compareTo。 你應該減去這些值。

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]));
    }    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM