-1

そのインデックスの値に基づいて配列のインデックスをソートしようとしています。例えば。[0,2,2,1] は [0,2,3,1] または [0,3,2,1] を返します

List<Integer> index_map = new LinkedList(Arrays.asList(0,1,2,3));
final int[] sizes = {0,2,1,1};

Collections.sort(index_map, new Comparator<Integer>() {
    @Override
    public int compare(Integer a, Integer b) {
        return sizes[a] < sizes[b] ? -1 : 1;
    }
});
System.out.println(Arrays.toString(sizes));
System.out.println(index_map);

ただし、 Collections.sort() と定義されたコンパレーターを使用すると、代わりに [0,3,1,2] が返されます。出力がそのようなものである理由と、目標を達成するためのより良い方法があるかどうかを誰かに教えてもらえますか? ありがとう

4

1 に答える 1