什麼是Java中簡單的方法來排序元素數組,維護元素存儲在原始數組中的索引信息?是否有內置功能?索引映射從排序到原始數組
我能想到的方法很少,但都不是微不足道的。
- 自己實現排序函數,並將索引數組與返回的數組一起返回到原始數組。
- 將元素包裝到一個類中,並將原始數組的索引存儲在此類中,避免了排序功能。
我需要它的原因是重新排列矩陣中的行,當重排順序由向量中的值指定時。矢量中的值應該按遞增順序排列,矩陣中的行應相應地重新排列。
什麼是Java中簡單的方法來排序元素數組,維護元素存儲在原始數組中的索引信息?是否有內置功能?索引映射從排序到原始數組
我能想到的方法很少,但都不是微不足道的。
我需要它的原因是重新排列矩陣中的行,當重排順序由向量中的值指定時。矢量中的值應該按遞增順序排列,矩陣中的行應相應地重新排列。
恕我直言,你會過得更好創建自己的設計,也許創建一個名爲MyDataSorter用的方法排序(yourArray)返回您的自定義類,也可以採取仿製藥的排序列表類...像
List<OriginalOrderKeeper<MyDataType>> sort (MyDataType [] array)
假設您可以直接對矩陣中的行進行重新排序,您不需要索引。
您可以嘗試使用Arrays.sort(Object[] a, Comparator c)
使用一種特殊的比較對它們進行排序:
public class RowComparator implements Comparator<double[]> {
public final int columnIndex;
@Override
public int compare(double[] row1, double[] row2) {
return Double.compare(row1[columnIndex], row2[columnIndex]);
}
public RowComparator(int columnIndex) {
super();
this.columnIndex = columnIndex;
}
}
您提供相關的比較,列索引初始化比較。
編輯:行和列混淆了一下。我假設一個double [rows] [columns]數組。
我正在尋找一個非常類似的選項。像IndexedDouble類有2個字段:原始數組中的double和index。不幸的是,泛型的一個問題是我必須爲每個簡單類型數組指定一個具體類型,這會爆炸一些聲明。 – Leonid 2012-02-08 11:15:52