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请记住,“泛型很有趣”;)