索引从已排序数组映射到原始数组

时间:2012-02-08 10:30:48

标签: java arrays sorting indexing

Java中一种简单的方法是对元素数组进行排序,以维护有关元素存储在原始数组中的索引的信息?有内置功能吗?

我能想到的方法很少,但其中没有一个是微不足道的。

  1. 自己实现排序函数,并将索引数组与排序数组一起返回原始数组。
  2. 将元素包装到一个类中,并在此类中存储原始数组的索引,从而避免使用sort函数。
  3. 我需要它的原因是,当向量中的值指定重新排列的顺序时,重新排列矩阵中的行。矢量中的值应按递增顺序排列,矩阵中的行应相应重新排列。

3 个答案:

答案 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]数组。