我是一名计算机科学专业二年级学生,目前正在使用 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 时,它返回一个错误,指出构造函数无法应用于给定类型。从我在此处和其他地方的搜索中读到的内容来看,使用整数时通常会遇到这种问题,但我不明白为什么它不适用于整数。
对这个问题的任何见解都将不胜感激,因为我仍在接受泛型的概念。
提前谢谢了!
这应该可以解决问题:
SelectionSort<Integer> ss = new SelectionSort<Integer>();
ss.sort(list, dataSize);
当您想将参数传递给不存在的构造函数时,您试图将它们传递给sort
方法代替。
在这里,我使用默认(无参数)构造函数来实例化一个新的SelectionSort<Integer>
,将其分配给变量ss
,然后调用sort
在那个带有参数的实例上。
另请注意,如果您只需要实例来调用sort
,您可以跳过作业:
new SelectionSort<Integer>().sort(list, dataSize);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)