使用泛型对整数数组进行排序 (Java)

2024-01-07

我是一名计算机科学专业二年级学生,目前正在使用 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(使用前将#替换为@)

使用泛型对整数数组进行排序 (Java) 的相关文章

随机推荐