排序不可比较的对象

Ale*_*ing 2 java sorting

我有一个无法比较的对象列表.但是,我仍然希望根据提供的索引位置数组对此对象列表进行排序.排序此列表的最快和最有效的方法是什么?这是一个例子:

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};
Run Code Online (Sandbox Code Playgroud)

最终列表应如下所示:

[YELLOW, GREEN, RED, BLUE, GREEN]
Run Code Online (Sandbox Code Playgroud)

我的具体要求是Java解决方案,但我也很想知道其他语言的解决方案.

Jon*_*eet 5

为什么不直接从索引创建列表?不需要"排序".

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

或C#:

var sorted = order.Select(index => list[index]).ToList();
Run Code Online (Sandbox Code Playgroud)