查找原始的2d排序数组索引

时间:2015-11-24 12:47:06

标签: java arrays sorting

我有这个数组

Array    Index
[3,5]  - 0
[1,7]  - 1
[12,4] - 2
[3,2]  - 3

我正在使用这种

Arrays.sort(array, (Integer[] int1, Integer[] int2) -> {
        Integer numberOfKeys1 = int1[1];
        Integer numberOfKeys2 = int2[1];
        return numberOfKeys1.compareTo(numberOfKeys2);
});

获得

Array    Index    Index I want 
[3,2]  - 0      - 3
[12,4] - 1      - 2
[3,5]  - 2      - 0
[1,7]  - 3      - 1

所以我的问题是。 如何获取已排序的二维数组的原始索引?

2 个答案:

答案 0 :(得分:1)

添加了第三行索引

array[i][2] = i;

然后运行排序。 解决了,工作。

答案 1 :(得分:0)

您可以定义一个包含数组和原始索引的类。

class ArrayIndex {

    Integer[] data;
    int originalIndex;
}

然后按这样对ArrayIndex[] array进行排序:

Arrays.sort(array, (ArrayIndex a, ArrayIndex b) -> 
        Integer.compare(a.data[1], b.data[1])
);

请注意上面Integer.compare方法如何简化比较并避免装箱。