2

比較できないオブジェクトのリストがあります。ただし、提供されたインデックス位置の配列に基づいて、このオブジェクトのリストを並べ替えたいと思います。このリストを並べ替える最も速くて効率的な方法は何ですか?次に例を示します。

List<Colour> list = new ArrayList<Colour>();
list.add(Colour.BLUE);
list.add(Colour.GREEN);
list.add(Colour.RED);
list.add(Colour.YELLOW);
list.add(Colour.GREEN);

int[] order = new int[] {3, 1, 2, 0, 4};

最終的なリストは次のようになります。

[YELLOW, GREEN, RED, BLUE, GREEN]

私の特定の要件はJavaでのソリューションですが、他の言語でもソリューションを知りたいと思います。

4

1 に答える 1

7

インデックスから直接リストを作成してみませんか?「並べ替え」は必要ありません。

List<Colour> sortedList = new ArrayList<Colour>();
for (int index : order) {
    sortedList.add(list.get(index));
}

またはC#:

var sorted = order.Select(index => list[index]).ToList();
于 2012-05-19T11:03:41.297 に答える