至从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语言开发的海洋生物知识库管理系统源码,涵盖57个文件,其中包括43个Java源文件、7个XML配置文件、4个属性文件、1个Git忽略文件以及1个构建脚本文件。系统旨在实现海洋生物文档的在线管理和查阅...
在本项目"Java小游戏大战海洋生物"中,我们聚焦于使用Java编程语言开发一款互动娱乐应用,让玩家能够体验到与海洋生物战斗的乐趣。通过这个小游戏,我们可以学习和掌握Java编程的一些核心概念和技术。 首先,Java是...
"基于World Wind Java的3D海洋石油平台管理系统的设计与实现" 本文主要介绍了基于World Wind Java的3D海洋石油平台管理系统的设计与实现。该系统采用B/S结构,通过“数字海洋”北海分局节点提供集成身份验证和数据...
本项目是一款采用Java Server Pages(JSP)技术构建的海洋环境保护宣传网站设计源码,包含838个文件,其中包括218个JavaScript文件、192个GIF图片文件、86个CSS样式文件、62个Java类文件、50个JSP页面文件、40个JAR...
在Java编程语言中,面向对象程序设计(Object-Oriented Programming, OOP)是一种核心的编程范式,它基于“对象”概念,将数据和处理数据的方法封装在一起,以实现代码的模块化和可重用性。这个压缩包文件"JAVA面向...
一些java的练习题,里面含有答案,有需要的朋友可以下载去看看,比较基础,适合广东海洋大学同学或者其他高校同学练习使用
该项目是一款采用Java全栈技术的海洋主题网站设计源码,包含1451个文件,涵盖丰富的资源类型,如839个PNG图像、245个JavaScript脚本、95个HTML页面、71个CSS样式表、68个JPG图片、36个Java类文件,以及少量其他类型...
### 深潜数据海洋:Java文件读写全面解析与实战指南 #### 第一章:走进文件流的世界 —— 字节与字符的交响 在Java中,文件读写是通过流来实现的,流是一种从源头到目的地的数据传输通道。Java支持两种基本类型的...
在JAVA游戏中,捕鱼达人采用了高效的图形渲染技术,使得游戏画面绚丽多彩,各种海洋生物栩栩如生,为玩家营造出逼真的海洋环境。游戏内包含了多种鱼类,每种鱼类都有独特的外观和行为,增加了游戏的多样性与可玩性。...
该项目是一款以Java语言为核心开发的海洋科普文章后台系统源码,总计包含85个文件,其中Java源文件67个,XML配置文件8个,属性文件2个,日志文件2个,Git忽略文件1个,HTTP相关文件1个,Maven构建文件1个,YAML配置...
java_springboot海洋航运管理系统_毕业论文.docx
在这个项目中,Java被用来创建游戏对象(如鱼、海洋背景、边界等),处理游戏逻辑,以及渲染游戏画面。 其次,游戏循环是任何游戏的基础,它通常由更新逻辑和渲染两部分组成。在`BigFish`源码中,可以找到一个持续...
**Java实验手册(初学者必操作完全版)** 在编程世界中,Java是一种广泛应用的面向对象的编程语言,尤其在企业级应用、Android开发以及云计算领域占有重要地位。本实验手册专为Java初学者设计,旨在通过一系列实践...
这份"java试卷.rar"压缩包文件包含了广东海洋大学Java历年期末课程试题和详细答案的完整版,对于学习Java的同学来说是一份非常宝贵的资源。它可以帮助你深入理解和掌握Java的基础知识,提高编程能力,并为考试做好...
该项目是一款基于Java语言的商务合作策划案设计源码,包含208个文件,其中包括173个Java源文件、20个XML配置文件、5个VM模板文件、1个Git忽略文件、1个开源协议文件、1个IDE项目文件、1个YAML配置文件、1个项目依赖...
该项目是一款基于Java语言开发的海洋点餐平台,采用前后端分离架构设计,包含169个文件,其中145个为Java源代码文件,16个为XML配置文件,2个为YAML配置文件,1个为Git忽略文件,1个为JAR包文件,1个为properties...
是基于java编程语言,mysql数据库,ssm框架,idea开发工具支持eclipse jdk版本:1.8 及以上 ide工具:IDEA 数据库: mysql5.7+ 编程语言: Java tomcat: 8.0 及以上 java框架:ssm maven: 3.6.1 前端:jsp+...