簡體   English   中英

排序雙精度雙數組Java

[英]Sort bidimensionnal double array java

我在對動態雙向矩陣進行排序時遇到了一些麻煩。 我搜索並找到此解決方案:

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

我應該如何使用我的課程? 我做錯了什么? 任何幫助都很好,謝謝:)

您需要在Double[]上鍵入Comparator 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]);
  }
});

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

暫無
暫無

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

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