Java中带泛型函数的整型/整型自动装箱查询
好的,我正在尝试用Java编写一个通用排序包(我正在学习一门算法课程,我认为这是一个很好的实践,无论是在算法方面还是在Java方面,因为我对该语言非常陌生)。无论如何,我认为最好的方法是创建一个包含多种排序方法的Java中带泛型函数的整型/整型自动装箱查询,java,generics,integer,int,autoboxing,Java,Generics,Integer,Int,Autoboxing,好的,我正在尝试用Java编写一个通用排序包(我正在学习一门算法课程,我认为这是一个很好的实践,无论是在算法方面还是在Java方面,因为我对该语言非常陌生)。无论如何,我认为最好的方法是创建一个包含多种排序方法的Sort类,如insertionSort,mergeSort等。如果您觉得有更好的方法,请告诉我,作为一个注释,因为我总是乐于接受编写更干净、更高效代码的建议 至于问题: 我有了主干结构,想先尝试编码insertionSort方法。然而,我试图传递一个整数数组,但遇到了一些问题。首先,对
Sort
类,如insertionSort
,mergeSort
等。如果您觉得有更好的方法,请告诉我,作为一个注释,因为我总是乐于接受编写更干净、更高效代码的建议
至于问题:
我有了主干结构,想先尝试编码insertionSort
方法。然而,我试图传递一个整数数组,但遇到了一些问题。首先,对于泛型,我理解您必须使用
,而不是
,但是由于某种原因,如果我创建一个数组,例如int[]arr=new int[]{..}
,并将其传递给泛型,它将不起作用。如何在不使用Integer[]arr=newinteger[]{..}
的情况下修复此问题?我的印象是编译器会自动将我的int
框到Integer
我的代码:
public class Sort<T> {
public T[] insertionSort(T[] array) {
// do some stuff
return array;
}
public static void main(String[] args) {
int[] orig = new int[]{1,35,3,2,4634,2,46,7,33,56};
Sort<Integer> sorter = new Sort<Integer>();
sorter.insertionSort(orig);
}
}
公共类排序{
公共T[]插入排序(T[]数组){
//做点什么
返回数组;
}
公共静态void main(字符串[]args){
int[]orig=新int[]{1,35,3,24634,2,46,7,33,56};
分拣机=新分拣机();
分拣机插入分拣机(orig);
}
}
如何在不使用整数[]arr=新整数[]{..}的情况下修复此问题
你没有。这根本行不通
我的印象是编译器会自动将我的int转换成Integer
对于单个int
到Integer
值,它将。但是没有从int[]
到Integer[]
的转换。。。因此,再加上Java泛型中缺少原语支持,采用T[]
的方法无法采用int[]
有些第三方库具有转换方法,但它们总是创建一个新数组,而不是在现有数组上创建视图。(可以创建一个列表
,该列表是对现有数组的一个视图,尽管添加
操作显然会失败,使用空值设置
操作也会失败。)
如何在不使用整数[]arr=新整数[]{..}的情况下修复此问题
你没有。这根本行不通
我的印象是编译器会自动将我的int转换成Integer
对于单个int
到Integer
值,它将。但是没有从int[]
到Integer[]
的转换。。。因此,再加上Java泛型中缺少原语支持,采用T[]
的方法无法采用int[]
有些第三方库具有转换方法,但它们总是创建一个新数组,而不是在现有数组上创建视图。(可以创建一个
列表
,该列表是对现有数组的一个视图,尽管添加
操作显然会失败,就像使用null
值设置
操作一样。)这是什么意思“它不工作”?你能告诉我们堆栈跟踪吗?我不关心排序算法,除非它是你代码的重要部分。我会使用Collections.sort()
和Arrays.sort()
。@PrR3我在IDE中收到一条警告,告诉我它不适用于int[],而只适用于Integer[]。Arnauddenoylle阅读了我的第一段,这是我自己的编程练习,既适用于Java实践,也适用于算法实践。这是什么意思“它不工作”?您能告诉我们堆栈跟踪吗?我不关心排序算法,除非它是您代码的重要部分。我将使用Collections.sort()
和Arrays.sort()
。@PrR3我在IDE中收到一条警告,告诉我它不适用于int[],而只适用于Integer[]@ArnaudDenoyelle阅读我的第一段,这是我自己的编程练习,包括Java实践和算法实践。Java.utils.Arrays
包在排序int[]时是如何工作的
?@Keir:它有一个单独的方法-就这么简单。我怀疑每个重载都有一个单独的-可能是自动生成的-实现。当然,有关详细信息,请参阅源代码。java.utils.Arrays
包在排序int[]时是如何工作的
?@Keir:它有一个单独的方法——就这么简单。我怀疑每个重载都有一个单独的——可能是自动生成的——实现。当然,有关详细信息,请参阅源代码。