可以对 Java 中的通用链表进行排序吗?
Possible to sort generic linked list in Java?
我正在尝试实现 k-means 聚类算法(尽管这个细节不是特别重要),我想在 Java 中使用泛型使其工作。
所以在我的主要class我会调用一个集群方法。我想知道是否可能出现以下情况:
public static <T> void cluster(int k, LinkedList<T> list) {
// Sort the list
LinkedList<T> sortedList = Collections.sort(list);
...
}
显然我 运行 遇到的问题是 T 不能保证实现 Comparable...但是有什么方法可以实现我想要做的事情吗?
这应该有效:
public static <T extends Comparable<T>> void cluster(int k, List<T> list) {
Collections.sort(list);
...
}
<T extends Comparable<T>>
确保 List<T>
包含 Comparable<T>
个元素。
我使用了 List<T>
,因为实现(LinkedList
、ArrayList
等)并不重要 - 您可以通过 List
接口访问它。但如果需要的话,您可以使用 LinkedList<T>
。
而且,Collections.sort()
没有 return 任何东西,它就地排序。
我正在尝试实现 k-means 聚类算法(尽管这个细节不是特别重要),我想在 Java 中使用泛型使其工作。
所以在我的主要class我会调用一个集群方法。我想知道是否可能出现以下情况:
public static <T> void cluster(int k, LinkedList<T> list) {
// Sort the list
LinkedList<T> sortedList = Collections.sort(list);
...
}
显然我 运行 遇到的问题是 T 不能保证实现 Comparable...但是有什么方法可以实现我想要做的事情吗?
这应该有效:
public static <T extends Comparable<T>> void cluster(int k, List<T> list) {
Collections.sort(list);
...
}
<T extends Comparable<T>>
确保 List<T>
包含 Comparable<T>
个元素。
我使用了 List<T>
,因为实现(LinkedList
、ArrayList
等)并不重要 - 您可以通过 List
接口访问它。但如果需要的话,您可以使用 LinkedList<T>
。
而且,Collections.sort()
没有 return 任何东西,它就地排序。