排序bidimensional双数组java

时间:2013-09-12 08:50:25

标签: java arrays double

我在排序动态bidimensionnal数组时遇到了一些麻烦。 我搜索并找到了这个解决方案:

Double[][] sortedOutput = new Double[length][4];

//... 
// processing and filling my tab like that
sortedOutput[k][0] = content[i].getLeftSpeed);
sortedOutput[k][1] = content[i].getRightSpeed();
sortedOutput[k][2] = content[i].getNormAvgPowOutput();

// ... 
// Now i'm trying to sort the tab
Arrays.sort(sortedOutput, new java.util.Comparator<double[]>()
{
  public int compare(double[]a, double[]b)
  {
    return Double.compare(a[0], b[0]);
  }
});

但不知怎的,我不行:

The method sort(T[], Comparator<? super T>) in the type Arrays is not applicable for the arguments (Double[][], new Comparator<double[]>(){})

为什么我不能将Arrays.sortdouble一起使用?

我也尝试上课:

package IOControl;

import java.util.Comparator;

public class CompareDoubleArray implements Comparator<double[]>
{
     private int column;

     public CompareDoubleArray(int column)
     {
        this.column = column;
     }

     public int compare(double[] arg0, double[] arg1) 
     {
        return Double.valueOf(arg0[column]).compareTo(Double.valueOf(arg1[column]));
     }
 }

我应该如何使用我的班级?我做错了什么? 任何帮助都会很好,谢谢:)。

2 个答案:

答案 0 :(得分:2)

您需要在Comparator上输入Double[]double[]Double[]不同。一个是基元数组,另一个是Double对象数组,它们是基元的包装器。

Arrays.sort(sortedOutput, new java.util.Comparator<Double[]>()
{
  public int compare(Double[]a, Double[]b)
  {
    return Double.compare(a[0], b[0]);
  }
});

答案 1 :(得分:0)

Arrays.sort只需single dimensional array作为参数。所以你不能在这里使用multidimensional array

尝试此代码可能会对您有所帮助。

for(Double[] d : sortedOutput){
   Arrays.sort(d , new Comparator<Double>(){
         @Override
         public int compare(Double o1, Double o2) {

        //implement logic here
         }
   });
 }