Java中一种简单的方法是对元素数组进行排序,以维护有关元素存储在原始数组中的索引的信息?有内置功能吗?
我能想到的方法很少,但其中没有一个是微不足道的。
我需要它的原因是,当向量中的值指定重新排列的顺序时,重新排列矩阵中的行。矢量中的值应按递增顺序排列,矩阵中的行应相应重新排列。
答案 0 :(得分:1)
为什么不在原始数组上迭代一次,然后在Map<Object, Integer>
中对索引进行排序和存储?
答案 1 :(得分:1)
恕我直言你最好创建自己的设计,也许用方法排序(yourArray)创建一个名为MyDataSorter的类,它返回一个自定义类的排序列表,也可以使用泛型...类似
List<OriginalOrderKeeper<MyDataType>> sort (MyDataType [] array)
答案 2 :(得分:0)
假设您可以直接对矩阵中的行重新排序,则不需要索引。
您可以尝试使用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;
}
}
使用与比较相关的列索引初始化比较器。
编辑:行和列混合了一点。我假设有一个双[rows] [columns]数组。