至从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));
}
}
分享到:
相关推荐
广东海洋大学java历年考题及答案
广东海洋大学java考试试题,
Java小游戏大战海洋生物
一些java的练习题,里面含有答案,有需要的朋友可以下载去看看,比较基础,适合广东海洋大学同学或者其他高校同学练习使用
JAVA面向对象程序设计(期末考试试题及答案)
是基于java编程语言,mysql数据库,ssm框架,idea开发工具支持eclipse jdk版本:1.8 及以上 ide工具:IDEA 数据库: mysql5.7+ 编程语言: Java tomcat: 8.0 及以上 java框架:ssm maven: 3.6.1 前端:jsp+...
Java大学学期期末大作业合集 内容概览: 这份合集是我在大学期间完成的Java学期期末大作业,其中包括了完整的代码、项目、文档和使用说明。内容涵盖了从基础到进阶的Java知识,具体包括: 代码与项目:详细的Java...
基于World Wind Java的3D海洋石油平台管理系统的设计与实现.pdf
Java期末试卷,有答案。 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A..java B. .class C..html D. .exe 2、设 x = 1 , y = 2 , z = 3,则表达式 y+=z-...
基于JAVA的汽车销售订单管理系统_宋海洋.caj
vue-springboot海洋馆预约系统的设计与实现java毕业论文.docx
实验指导--java 基础 ,河北农业大学海洋学院
中国海洋大学通识教育课程教学大纲.pdf
带答案试题十余份。 Java程序设计山东大学 Java高级程序设计语言课程试卷 8套,有1套无答案 Java期末考试试题B含答案.doc.doc ...广东海洋大学Java历年期末课程试题和含答案(完整版).pdf ITAT预赛含答案.doc
一个基于java的水族馆管理数据库. 可以管理多个水族馆每DB和更多不同的db 可以存储测试包度量值, 并在图形中为分析获取中等数值或绘制它们。 可以存储有关维护活动的信息。 您可以存储支出数据并获取相关报表。 ...
在myeclipse下的一个web程序,把wsdl文件转化成java代码
Java面向对象程序设计_江苏海洋大学中国大学mooc课后章节答案期末考试题库2023年.docx
关于类的具体解释和习题以及答案解析。类的各种使用方法,类的继承等。
用java编写的生成cron表达式工具类,支持生成各种cron表达式,共10个方法,且支持参数定制化和输出格式定制化,下载后不满意找我