我有一个选择排序算法,它适用于任何实现了类似接口的数据类型(例如整型、双精度、字符型)。
public class SelectionSort {
public static void sort(Comparable[] a) {
int n = a.length;
for (int i = 0; i < n; i++) {
int min = i;
for (int j = i; j < n; j++)
if (less(a[j], a[min]))
min = j;
exchange(a, i, min);
}
}
private static boolean less(Comparable a, Comparable b) {
return a.compareTo(b) < 0;
}
private static void exchange(Comparable[] a, int i, int j) {
Comparable temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public static boolean isSorted(Comparable[] a) {
for (int i = 1; i < a.length; i++)
if (less(a[i], a[i - 1]))
return false;
return true;
}
}
然而,我收到了多个警告,告诉我“Comparable是一个原始类型。对泛型类型Comparable的引用应该被参数化”。我需要将该类实现为泛型还是可以让它保持原样?如果我需要将该类实现为泛型,我该如何做,因为方法是静态的。
2条答案
按热度按时间6mw9ycah1#
它是具有泛型方法的非泛型类。
如果您在类未实现
Comparable
接口的对象上调用sort方法,则此代码将抛出Exception58wvjzkj2#
以下是更新的代码:
}
以下是您现在可以使用“选择”排序的方法: