2016-12-15 3 views
0

コンパレータを使用して配列値の並べ替えを追跡しようとしています。私は実装を他の場所で見たことがありますが、私はそれを自分のコードと相乗させるために苦労しています。コンパレータを使用して配列を並べ替え、インデックスの位置を保持

インデックス値で[X] [0]と[X] [1]に2次元配列にランダムな値を入力しました。

import java.util.Arrays; 
    import java.util.Comparator; 
    public class ComparatorTest{ 

    static double testArray[][] = new double [10][10]; 

     public static void main(String[] args) { 
      fillArray(); 
      setIndexVals(); 
     } 

     public static void fillArray(){ 
      for(int row = 0; row < 10; row++){ 
       testArray[row][0] = Math.random(); 
       System.out.println(testArray[row][0]); 
      } 
     } 

     public static void setIndexVals(){ 
      for (int row = 0; row < testArray.length; row++){ 
       testArray[row][1]= row + 1; 
       System.out.println(testArray[row][1]); 

      } 
     } 
     public static void sortArray(){ 
      Arrays.sort(testArray, new Comparator<int[]>(){ 
       public int compare(double[] value, double[] index){ 
        return value[0]-index[0]; 
       } 
      }); 
     } 
    } 
+0

あなたのプログラムは何を期待しますか? –

+0

値を昇順に並べ替え、元のインデックス値を並べ替えることをお勧めします。 – AnthonyJ

+0

問題は、私が答えでそれをどのように対処したのか、それともまだ動作していないのかなど、二重を比較した方法と関係していますか? –

答えて

0

それが本当に値とインデックスではなく、2次元アレイ内の2つのアレイを取り込むので、私はcompareメソッドのパラメータの名前を変更することを選択した

public int compare(double[] value, double[] index){ 
    return value[0]-index[0]; 
} 

public int compare(double[] value1, double[] value2){ 
    return Double.compare(value1[0], value2[0]); 
} 

に置き換えアレイ。インデックスを比較する場合は、value1[1]value2[1]を比較します。

実際の修正はvalue[0]-index[0]に変更されています。これは、正確な比較を使用して2倍を比較することはめったにないためです。

関連する問題