我正在尝试实现一个通用的选择排序,它可以接受任何对象并对其进行排序。我可以向编译器保证,无论我在比较什么对象,都会为其实现 compareTo 方法。但是我得到以下代码的编译错误
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class SelectionSortGenerics implements Comparable<E> {
private <E> void swap(E[] a, int i, int j) {
if (i != j) {
E temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
public <E> void selectionSort(E[] a) {
for (int i = 0; i < a.length - 1; i++) {
// find index of smallest element
int smallest = i;
for (int j = i + 1; j < a.length; j++) {
if (a[j].compareTo(a[smallest])<=0) {
smallest = j;
}
}
swap(a, i, smallest); // swap smallest to front
}
}
public static void main(String[] args){
SelectionSortGenerics firstsort = new SelectionSortGenerics();
Integer[] arr = {3,4,1,5};
System.out.println("before sorting int: "+ Arrays.toString(arr));
firstsort.selectionSort(arr);
System.out.println("After sorting int : "+Arrays.toString(arr));
String[] arr1= {"acd","ded","dal","bad","cle"};
System.out.println("before sorting String: "+ Arrays.toString(arr1));
firstsort.selectionSort(arr1);
System.out.println("After sorting String : "+Arrays.toString(arr1));
Character[] arr2= {'c','e','a','d','c'};
System.out.println("before sorting char: "+ Arrays.toString(arr2));
firstsort.selectionSort(arr2);
System.out.println("After sorting char : "+Arrays.toString(arr2));
}
}
如您所见,我在main方法中传递的对象是Integer、String和Character,其中有compareTo方法。如何使上述代码工作。任何地方都需要铸造?谢谢你的帮助。