1

動的な 2 次元配列の並べ替えに問題があります。私はこの解決策を検索して見つけました:

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.sortで使用できないのはなぜdoubleですか?

私もクラスを作ろうとしました:

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

クラスをどのように使用すればよいですか? 私は何を間違えましたか?どんな助けでもいいです、ありがとう:)

4

2 に答える 2

2

Comparatoronと入力する必要がありますDouble[]。Adouble[]は と同じではありませんDouble[]。1 つはプリミティブの配列で、もう 1 つはプリミティブのDoubleラッパーであるオブジェクトの配列です。

Arrays.sort(sortedOutput, new java.util.Comparator<Double[]>()
{
  public int compare(Double[]a, Double[]b)
  {
    return Double.compare(a[0], b[0]);
  }
});
于 2013-09-12T08:56:54.563 に答える