java - 对不可比较的对象进行排序

标签 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};

最终列表应该是这样的:

[YELLOW, GREEN, RED, BLUE, GREEN]

我的具体要求是使用 Java 的解决方案,但我也有兴趣了解其他语言的解决方案。

最佳答案

为什么不直接从索引创建列表呢?不需要“排序”。

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

或 C#:

var sorted = order.Select(index => list[index]).ToList();

关于java - 对不可比较的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10664589/

相关文章:

java - 查询HashMap内部实现

java - 同步取决于字符串初始化

java - Spotify 传递变量 + 重定向 URL

python - 如何按反向排序元组,但不反向打破关系? (Python)

java - 使用 Java 中具有相同类型属性的另一个数组列表的顺序,按对象属性对数组列表进行排序

java - HashMap 数据类型是否有任何限制

java - Java中的Trie数据结构

javascript - 主干是否对集合中的所有元素或仅添加的元素进行排序

algorithm - 计算相差一个字母的词对

Javascript - 如何混合具有特定排序顺序的两个对象数组?