我是一名二年级计算机科学专业的学生,目前正在学习 Java,我们最近开始使用泛型。我有一个任务,我得到了一个使用泛型的排序算法列表,并负责使用它们对整数列表(不是原始整数)进行排序。由于排序类使用扩展 Comparable 的泛型,我认为简单地将 Integer 数组交给它们不会有问题,但构建输出不断出现不兼容的类型。
相关代码如下;
主程序的一部分
final int NUMITEMS = 100000;
Integer[] list = new Integer[NUMITEMS];
int dataSize = 0;
//method reads contents of a file into array and returns number of objects
System.out.println((dataSize = readDataFile(list)));
SelectionSort SS = new SelectionSort(list, dataSize);//problem is here
以及按原样提供和预期使用的 SelectionSort 算法
class SelectionSort<T extends Comparable<? super T>> implements SortAlgorithm<T> {
public void sort ( T [ ] theArray, int size ) {
for (int last = size-1; last > 0 ; last--)
{
int largest = 0;
for (int scan = 1; scan <= last; scan++)
if (theArray[scan].compareTo(theArray[largest])>0)
largest = scan;
/** Swap the values */
T temp = theArray[largest];
theArray[largest] = theArray[last];
theArray[last] = temp;
}
} // method selectionSort
我遇到的问题是声明 SelectionSort,它返回一个错误,即构造函数不能应用于给定类型。从我在这里和其他地方的搜索中读到的内容,在使用整数时通常会遇到这种问题,但我不明白为什么它不适用于整数。对这个问题的任何见解将不胜感激,因为我仍在接受泛型的概念。提前谢谢了!