版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构(Java版) 北京信息科技大学 计算机学院 段瑞雪12泛型31 public class GenericTest 2 public static void main(String args) 3 List list = new ArrayList(); 4 list.add(qqyumidi); 5 list.add(corn); 6 list.add(100); 7 8 for (int i = 0; i list.size(); i+) 9 String name = (String) list.get(i); / 110 System.out.println(name: + n
2、ame);11 12 13 /apidocs/apidoc?api=jdk-zhInteger.parseInt(String)程序实现源码泛型泛型,即“参数化类型”。顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 一般用T表示。451 public class GenericTest2 2 3 public static void main(String args) 4 /* 5 List list = new ArrayList(); 6 list.add(qqyumidi
3、); 7 list.add(corn); 8 list.add(100); 9 */10 11 List list = new ArrayList();12 list.add(qqyumidi);13 list.add(corn);14 /list.add(100); / 1 提示编译错误15 16 for (int i = 0; i list.size(); i+) 17 String name = list.get(i); / 218 System.out.println(name: + name);19 20 21 public class List Boolean add(T key)
4、; T get(T key); T set(T key);.6自定义泛型接口、泛型类和泛型方法7public class Box private int t; public void set(int t) this.t = t; public int get() return t; 8public class Box private float t; public void set(float t) this.t = t; public float get() return t; 9public class Box private T t; public void set(T t) this.
5、t = t; public T get() return t; 泛型类10public class Box private T t; public void set(T t) this.t = t; public T get() return t; public static void main(String args) Box integerBox = new Box(); Box stringBox = new Box(); integerBox.set(new Integer(10); stringBox.set(new String(菜鸟教程); System.out.printf(整
6、型值为 :%dnn, integerBox.get(); System.out.printf(字符串为 :%sn, stringBox.get(); 为什么引入泛型的概念? 1. 类型检查。 2. 节省空间,一个泛型类,可以处理各种数据类型的数据。 1112ADT Set数据:集合中的数据元素,数据元素的数据类型为T操作boolean isEmpty();int size();T search(T key);boolean contains(T key);boolean add(T x);T remove(T key);void clear();boolean containsAll(Sets
7、et);boolean addAll(Setset);13接口14声明一个接口(最简单的情况)15接口的实际应用16interface USB / 操作标准 public void install() ; public void work() ;class Computer public void plugin(USB usb) usb.install() ; usb.work() ; class Phone implements USB public void install() System.out.println(安装手机驱动程序。) ; public void work() Syste
8、m.out.println(手机与电脑进行工作。) ; class Printer implements USB public void install() System.out.println(安装打印机驱动程序。) ; public void work() System.out.println(进行文件打印。) ; class MP3 implements USB public void install() System.out.println(安装MP3驱动程序。) ; public void work() System.out.println(进行MP3拷贝。) ; public cl
9、ass TestDemo public static void main(String args) Computer c = new Computer() ; c.plugin(new Phone() ; c.plugin(new Printer() ; c.plugin(new MP3(); 为什么要引入接口的概念? 1. 减少重复定义。 2. 便于利用基类引用,处理各种类型的子类,实现多态。1718接口和泛型19public interface Set 泛型接口public class SortSet implements SetSet set = new SortSet();set.ad
10、d(x)泛型通配符T 是类型参数,指定元素的数据类型,T的实际参数类型是类,在声明和创建对象时指定。 “?” 是泛型通配符, “?extends T” 是指T及其任意一个子类。 “? super T” 是指T及其任意一个父类。2021泛型中占位符 T和 ?有什么区别?/woshizisezise/article/details/7937446022public class Teacher public String str; public int age; public int sex; public Teacher(String str, int age,int sex) this.str
11、= str; this.age = age; this.sex = sex; public class Student extends Teacher public Student(String str, int age,int sex) super(str,age,sex); public class Child extends Student public Child(String str, int age,int sex) super(str,age,sex); TeacherStudentChild23public static void test() ArrayList list1
12、= new ArrayList(); list1.add(new Student(zhangsan,18,0); list1.add(new Student(lisi,28,0); list1.add(new Student(wangwu,24,1); /这里如果add(new Teacher(.);就会报错, show1(list1); /这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 public static void show1(List list) for (Object object : list) System.out.println(object.toSt
13、ring(); 24public static void test2()/这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 ArrayList list2 = new ArrayList(); list2.add(new Student(zhaoliu,22,1); list2.add(new Teacher(sunba,30,0); show2(list2); public static void show2(List list) for (Object object : list) System.out.println(object); 25public static
14、void test3() ArrayList list3 = new ArrayList(); list3.add(new Teacher(zhaoliu,22,1); list3.add(new Teacher(sunba,30,0); show3(list3); /这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 public static void show3(List list) for (Object object : list) System.out.println(object); 26public static void test3() /这里我们并没有给L
15、ist指定具体的数据类型, /可以存放多种类型数据 ArrayList list4 = new ArrayList(); list4.add(new Student(sunba,30,0); list4.add(new Teacher(zhaoliu,22,1); show4(list4); public static void show4(List list) for (Object object : list) System.out.println(object); 27public static void test3() ArrayList list5 = new ArrayList(); list5.add(new Child(zhangsan, 15,1); list5.add(new Child(sunba,30,0); list5.add(new Child(zhaoliu,22,1); show3(list5); ArrayList list6 = new ArrayList(); list6.add(new Child(zhangsan,15,1); list6.add(new Stude
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海市第八中学2026届高三5月第一次联考化学试题含解析
- Hydrocinchonidine-生命科学试剂-MCE
- 2025年中国经济型数控工具磨床市场调查研究报告
- 2025年中国粮食抛光机市场调查研究报告
- 2025年中国硬质合金内衬市场调查研究报告
- 2025年中国成套棉籽壳加工设备市场调查研究报告
- 河北省张家口市蔚县一中2026届高考化学试题原创模拟卷(十二)含解析
- 云南省禄劝彝族苗族自治县一中2026届高三一模检测试题化学试题试卷含解析
- 山东德州市陵城区一中2026届高三接轨考试化学试题文试题含解析
- 2026一年级下册语文作业讲评指导课件
- 取民工驻地管理办法
- 地质矿产专家库管理办法
- 2025年安徽省中考数学试题含答案
- 湖南省雅礼集团2024-2025学年七年级下学期期末语文试题(含答案)
- 2025年广东省中考数学试卷真题(含答案详解)
- 2025年高考数学真题一卷和二卷(含答案)
- 中国石油化工股份有限公司西北油田分公司顺北油田原油外输管道工程环境影响后评价环评报告
- 浙江省杭州市临平区2023-2024学年五年级下数学期末基础性学力测评试卷(含答案)
- CJ/T 288-2008预制双层不锈钢烟道及烟囱
- 2025广州市小升初英语复习汇编:任务型阅读(含解析)
- 项目清场协议书
评论
0/150
提交评论