对Java中任何类型的列表或集合进行排序

时间:2019-06-14 13:42:33

标签: java

我想用Java编写一个帮助程序函数,该函数使我可以对任何类型(通用类型)的列表或集合进行排序。我没有运气就尝试了以下代码:

public static sort(Collection<T> list) {
    Collections.sort(list);
}

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:1)

Collection<T>进行排序的问题在于,它不必具有定义的顺序。例如a Set implements Collection,但是它是无序的,因此对其进行排序没有意义。

实际上,唯一要使用的Collection Collections.sortList<T> (docs)

您最好的选择是将所有元素添加到List<T>并进行排序。

答案 1 :(得分:1)

  • 您可能想在方法中添加一个void返回类型。
  • Collections.sort()方法仅使用List,即 特定类型的集合。因此,您不能指定Collection<T> list作为参数。
  • 除非您所有的类型T都实现了Comparable接口, 将无法正常工作。您将需要重载您的排序方法并包括 对于这些特殊情况,需要使用Comparator<T>

您不能真正对集合进行排序。没有方法可以获取Set的特定元素。因此,您必须在构建它们时对它们进行排序,然后按该顺序对其进行维护。

因此对于列表,只需使用Collections API进行排序。对于集合,请从TreeSet或其他一些SortedSet实现开始。