Java Can';我搞不清什么类型的论点I';我打算采用这种分类方法

Java Can';我搞不清什么类型的论点I';我打算采用这种分类方法,java,arrays,sorting,Java,Arrays,Sorting,因此,我试图让我的程序使用教科书中给出的方法对数组进行排序,但我无法确定参数想要什么 这是给我们的代码: public static <T extends Comparable<T>> void sort(T[] a) { final int N = a.length; for (int i = 0; i < N; i++) { for (int j = i; j > 0 && less(a[j], a[j-1

因此,我试图让我的程序使用教科书中给出的方法对数组进行排序,但我无法确定参数想要什么

这是给我们的代码:

 public static <T extends Comparable<T>> void sort(T[] a) {
    final int N = a.length;
    for (int i = 0; i < N; i++) {
        for (int j = i; j > 0 && less(a[j], a[j-1]); j--) {
            exch(a, j, j-1);
        }
        assert isSorted(a, 0, i);
    }
    assert isSorted(a);
}
publicstaticvoid排序(T[]a){
最终整数N=a.长度;
对于(int i=0;i0&&less(a[j],a[j-1]);j--{
行政会议(a、j、j-1);
}
断言排序(a,0,i);
}
断言分类(a);
}
这是我的节目:

public static void main(String[] args){
    double power = 0;
    int i;
    Random rand = new Random();
    for (i=8;i<=18;i++){
        power = Math.pow(2, i);
        double[] doubleArray = new double[(int) power];
        for(int j = 0;j<doubleArray.length;j++) doubleArray[j] = rand.nextInt();
        Insertion.sort(doubleArray);
    }
}
publicstaticvoidmain(字符串[]args){
双幂=0;
int i;
Random rand=新的Random();
for(i=8;i
只是意味着T至少必须是可比较的类型。但是,可比较也是通用的,因此您还必须指定可比较的类型,即T类型

集合类和用于基元类型的包装类满足此条件,因此您可以使用其中任何一个。

基元(
double
)不能与泛型一起使用,它需要某种类型的
对象。
double
也不可比较(它没有实现所需的
接口
…因为它是一个原语)

例如,您可以使用
Double

    for (i = 8; i <= 18; i++) {
        power = Math.pow(2, i);
        Double[] doubleArray = new Double[(int) power];
        for (int j = 0; j < doubleArray.length; j++) {
            doubleArray[j] = (double)rand.nextInt();
        }
        sort(doubleArray);
    }

for(i=8;i您需要传递一个数组对象,其中的对象是相同类型的,并实现与它们自身类似的接口

原语double不实现Compariable,但double实现了Compariable。

public static void main(String[] args){
  double power = 0;
  int i;
  Random rand = new Random();
  for (i=8;i<=18;i++){
    power = Math.pow(2, i);
    Integer[] integerArray = new Integer[(int) power];
    for(int j = 0;j<integerArray.length;j++) integerArray[j] = rand.nextInt();
    Insertion.sort(integerArray);
  }
}
publicstaticvoidmain(字符串[]args){
双幂=0;
int i;
Random rand=新的Random();

对于(i=8;iThanks@MadProgrammer!回过头来看,这是一个明显的错误,但我对Java以及Double(对象)和Double(原语)之间的区别还不熟悉现在还是这样。将来我会尽量避免使用原语,因为它们经常会给我带来麻烦!原语没有错,但有了自动装箱支持,不用再问一个问题就可以做到:为什么要使用T?它是对象的行话/速记吗?我能用任何变量替换T吗?它仍然会要求对象类型吗?这是一个地方作为泛型类型,请参阅以了解更多详细信息。但基本上,它意味着您不需要为希望必须处理的每个对象类型编写方法,但可以同时提供一种筛选。例如,
基本上意味着它处理任何对象类型,它从
Comparable
扩展而来,其中
Comparable ble
可以与同一类型进行比较…:p请记住,“泛型很有趣”;)