我想用Java编写一个帮助程序函数,该函数使我可以对任何类型(通用类型)的列表或集合进行排序。我没有运气就尝试了以下代码:
public static sort(Collection<T> list) {
Collections.sort(list);
}
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
对Collection<T>
进行排序的问题在于,它不必具有定义的顺序。例如a Set
implements Collection
,但是它是无序的,因此对其进行排序没有意义。
实际上,唯一要使用的Collection
Collections.sort
是List<T>
(docs)
您最好的选择是将所有元素添加到List<T>
并进行排序。
答案 1 :(得分:1)
void
返回类型。Collections.sort()
方法仅使用List
,即
特定类型的集合。因此,您不能指定Collection<T> list
作为参数。T
都实现了Comparable
接口,
将无法正常工作。您将需要重载您的排序方法并包括
对于这些特殊情况,需要使用Comparator<T>
。您不能真正对集合进行排序。没有方法可以获取Set的特定元素。因此,您必须在构建它们时对它们进行排序,然后按该顺序对其进行维护。
因此对于列表,只需使用Collections API
进行排序。对于集合,请从TreeSet
或其他一些SortedSet
实现开始。