`

java海洋

阅读更多
至从JDK引入了泛型后,围绕是不是用泛型、为什么要使用泛型、怎么使用泛型的讨论就没有停止过,新近看到新版的数据结构基本都开始使用泛型了,既然变成潮流了,我想我也不能路后啊,查阅书籍小探究探究了一番,以下就是个人对泛型的一点理解!
首先来说明一下使用泛型的好处,只有清楚这点,才会收到大家的欢迎啊。
类型转换,这是每个程序员经常遇到的问题。频繁的类型强制转换是任何基于Object的集合的重要部分,Object引用的通用性会阻止编译器标示出程序错误使用对象类型和基于Object的集合,这种情况会表现为带来软件质量和可靠性问题的运行时错误。比如用一个list集合来保存一个String对象,不过由于疏忽,程序在用一个Integer对象来更新这个String对象的值。这个错误无法被编译器检测出来,但是在检测该元素时会导致一个运行时ClassCastErrorException异常。
小结一下:使用泛型为了在存取数据时,防止不合法的数据插入。
如何使用泛型呢。以下那选择排序是事例进行说明
public class Sort {

public static void selectionSort(Object [] arr){
int n = arr.length,smallIndex = 0;
Object temp ;
for(int i = 0;i<n-1 ; i++){
smallIndex = i;
for(int j = i+1;j<n;j++){
if(((Comparable<Object>)arr[smallIndex]).compareTo
(((Comparable<Object>)arr[j]))>0)
smallIndex = j;
}
if(smallIndex != i){
temp = arr[smallIndex];
arr[smallIndex]=arr[i];
arr[i]=temp;

}
}
}
public static void main(String[] args) {
Random rd = new Random();
Double [] arr = new Double[5];
for(int i = 0;i<5;i++){
arr[i]= rd.nextDouble();

}

System.out.println("array(before):"+Arrays.toString(arr));
selectionSort(arr);
System.out.println("array(after):"+Arrays.toString(arr));

}

}
我们使用泛型数组,那么就可以对任何基本数据类型进行排序了。这应该是我们用的最多的一种方式,泛型方法。下面将给出继承泛型接口的代码
package Generic;
import java.util.*;

public class Sort {

public static <T extends Comparable<? super T>> void selectionSort(T[] arr){
int n = arr.length,smallIndex = 0;
T temp ;
for(int i = 0;i<n-1 ; i++){
smallIndex = i;
for(int j = i+1;j<n;j++){
if(arr[j].compareTo(arr[smallIndex])<0)
smallIndex = j;
}
if(smallIndex != i){
temp = arr[smallIndex];
arr[smallIndex]=arr[i];
arr[i]=temp;

}
}
}
public static void main(String[] args) {
Random rd = new Random();
Double [] arr = new Double[5];
for(int i = 0;i<5;i++){
arr[i]= rd.nextDouble();

}
//Integer arr [] ={1,5,3,7,9};
System.out.println("array(before):"+Arrays.toString(arr));
selectionSort(arr);
System.out.println("array(after):"+Arrays.toString(arr));

}

}
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics