2016-12-15 47 views
0

我試圖使用比較器對數組值進行排序後跟蹤數組值。我已經看到了其他地方的實現,但我努力使它與我的代碼協同工作。使用比較器對數組進行排序並保持索引位置

我用我的索引值在[X] [0]和[X] [1]處用隨機值填充了我的二維數組。

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

替換

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

我選擇在compare方法重命名的參數,因爲它確實發生在兩個陣列2D陣列中,而不是一個值和索引陣列。如果你想比較索引,那麼你會比較value1[1]value2[1]

但真正的解決方案正在改變value[0]-index[0],因爲你應該很少使用精確的比較來比較雙打。

相關問題