我最近了解了泛型并重新编写了旧的二进制排序程序,该程序过去只对int
类型的值进行排序
我的新实现将排序除原始数据类型之外的所有内容
以下是实施:
import java.util.Random;
class SortAllTypes
{
static <All extends Comparable<All>> void sort(All array[])
{
for(int i = array.length - 1; i >= 0; i--)
for(int j = 0; j < i; j++)
if(array[j].compareTo(array[j+1]) > 0)
{
All temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
static <All> void display(All array[])
{
for(All value : array)
System.out.print(value + " ");
System.out.println();
}
public static void main(String X[])
{
Random generator = new Random();
Integer x[] = new Integer[10];
String directory[] = {"def", "ghi", "abc"};
for(int i = 0 ; i < x.length; i++)
x[i] = generator.nextInt(100);
sort(directory);
display(directory);
sort(x);
display(x);
}
}
我知道仿制药不能处理原始数据类型,我找不到编写单个函数的解决方案,可以对任何{的值进行排序{1}}。 有没有办法做到这一点?
答案 0 :(得分:2)
可以定义一个方法,它接受Object
然后进行instanceof
检查以确定提供了哪种类型的数组并操作特定类型的数组。我很确定这不是你想要的。
查看Arrays实用程序类。请注意,Object[]
和每种基本类型都会重载每个操作(binarySearch,copyOf,sort等)。