![Java应用开发与实践-集合与泛型_第1页](http://file4.renrendoc.com/view9/M00/1B/32/wKhkGWce02mARp5SAAB9ckiP284604.jpg)
![Java应用开发与实践-集合与泛型_第2页](http://file4.renrendoc.com/view9/M00/1B/32/wKhkGWce02mARp5SAAB9ckiP2846042.jpg)
![Java应用开发与实践-集合与泛型_第3页](http://file4.renrendoc.com/view9/M00/1B/32/wKhkGWce02mARp5SAAB9ckiP2846043.jpg)
![Java应用开发与实践-集合与泛型_第4页](http://file4.renrendoc.com/view9/M00/1B/32/wKhkGWce02mARp5SAAB9ckiP2846044.jpg)
![Java应用开发与实践-集合与泛型_第5页](http://file4.renrendoc.com/view9/M00/1B/32/wKhkGWce02mARp5SAAB9ckiP2846045.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集合与泛型Java应用开发与实践
酒店管理系统的设计学习目标了解集合框架的构成了解Collection接口及常用子接口掌握List接口及实现类的用法了解Set接口及实现类的用法掌握Map接口及实现类的用法了解泛型的意义理解在类和接口中的应用5.1集合框架5.2泛型5.3实训5集合实现类的基础练习目录5.1集合框架在Java语言中的java.util包提供了一些集合类,这些集合类又被称作容器,是一个包含多个元素的对象,集合可以对数据进行存储,删除,修改、查询等操作。它不同与数组,数组有固定长度,所以在定义数组的时候必须预先确定数组的大小,集合不必确定固定的大小,在存放对象是拥有更多的灵活性。集合框架是一个用来代表和操纵集合的统一架构。接口:表示集合的抽象数据类型。实现类:集合接口的具体实现,是重用性很高的数据结构。算法:用来根据需要对实体类中的对象进行计算,比如存储、查找、排序等。同一种算法可以对不同的集合实现类进行计算,这是利用了“多态”。5.1集合框架Collection接口是集合接口树的根,它是集合框架的顶级接口。Collection接口是List、Queue和Set接口的父接口。5.1.1Collection接口及常用子接口5.1集合框架接口List<E>是有序的collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。使用List接口的实现类时,可以指定列表中每个元素的插入位置,用户可以根据元素的索引值(即元素在列表中的位置)访问元素,并搜索列表中的元素。5.1.2List接口及实现类方法声明
方法功能voidadd(intindex,Objectelement)在列表的index位置添加元素Objectremove(intindex)删除列表中index位置的元素Objectget(intindex)返回列表index位置的元素Objectset(intindex,Objectelement)用指定元素替换列表中指定位置的元素1.ArrayList类ArrayList类是List接口的大小可变数组的实现,它实现了所有可选列表操作,并允许包括null在内的所有元素。除了实现List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。ArrayList<Student>list=newArrayList<Student>();//创建ArrayList对象list.add(s1);//将s1加入ArrayList列表list.add(s2);list.add(1,s3);//将s3加入ArrayList列表中(列表第二个)Studenttemp=(Student)list.get(0);5.1.2List接口及实现类2.LinkedList类LinkedList也实现了List接口,它是List接口的链接列表实现,它实现所有可选的列表操作,并且允许所有元素(包括null)。除了实现List接口外,LinkedList类还为在列表的开头及结尾get()、remove()和insert()元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。LinkedList<Student>list=newLinkedList<Student>();//创建LinkedList对象list.addFirst(s1);//将s1加入LinkedList列表最前面(列表第一个)list.addFirst(s2);list.add(1,s3);//将s3加入LinkedList列表中(列表第二个)Studenttemp=(Student)list.get(i);list.remove(0);//删除列表第一个对象(标号为0)5.1.2List接口及实现类3.Vector类Vector类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector的大小可以根据需要增大或缩小,以适应创建Vector后进行添加或移除项的操作。Vectorvector=newVector();//创建一个Vector对象vector.add(s1);//将s1加入Vector列表最前面(列表第一个)vector.add(s2);vector.add(1,s3);//将s3加入Vector列表中(列表第二个)Studenttemp=(Student)vector.get(i);vector.remove(0);5.1.2List接口及实现类4.Stack类Stack类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类Vector进行了扩展,允许将向量视为堆栈。它提供了通常的push()和pop()操作,以及取堆栈顶点的peek()方法、测试堆栈是否为空的empty()方法、在堆栈中查找项并确定到堆栈顶距离的search()方法。Stackstack=newStack();//创建一个Stack对象stackstack.push(s1);//s1进栈(栈底)printStack(stack);//显示栈中的所有元素stack.push(s2);//s2进栈printStack(stack);stack.pop();//出栈5.1.2List接口及实现类5.1集合框架Set接口是一个不包含重复元素的collection。更确切地讲,set不包含满足e1.equals(e2)的元素对e1和e2,并且最多包含一个null元素。Set接口要求集合元素是唯一的(但元素可以为null),不能保证迭代顺序恒久不变,它是无序的。比较常用的实现类是HashSet类。5.1.3Set接口及实现类5.1集合框架 Set<String>set=newHashSet<String>();System.out.println(set.add("hello"));//trueSystem.out.println(set.add("hello"));//falseSystem.out.println(set.remove("hello"));//trueSystem.out.println(set.remove("hello"));//falseSystem.out.println(set.add(null));//trueSystem.out.println(set.remove(null));//trueSystem.out.println(set.remove(null));//false5.1.3Set接口及实现类5.1集合框架 Set<String>set=newHashSet<String>(); set.add("hello1");set.add("hello2");set.add("hello3");set.add("hello4");set.add("hello5");set.add("hello6");Iterator<String>iterator=set.iterator();//迭代器iterwhile(iterator.hasNext()){//输出set里的所有元素
Stringstr=(String)iterator.next();System.out.println(str);} }5.1.3Set接口及实现类5.1集合框架Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射。一个映射不能包含重复的键;每个键最多只能映射到一个值。映射顺序定义为迭代器在映射的collection视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如TreeMap类;另一些映射实现则不保证顺序,如最常见的HashMap类,它的储存方式是哈希表,优点是查询指定元素效率高。5.1.4Map接口及实现类5.1集合框架5.1.4Map接口及实现类5.1集合框架HashMaphm=newHashMap();//创建一个HashMap对象hm.put("001",s1);//将s1加入hm中hm.put("002",s2);//put(Object,Object):一个是key一个是value,键值对hm.put("003",s3);//将对象s2替换掉(因为key是唯一的)
//查找学号为002的学生,containsKey返回boolean值if(hm.containsKey("002")) { System.out.println("有此学生"); Students=(Student)hm.get("002");//取出学号为002的学生对象}5.1.4Map接口及实现类5.1集合框架ArrayList:元素单个,效率高,多用于查询。LinkedList:元素单个,多用于插入和删除。Vector:元素单个,线程安全,多用于查询。Stack:元素单个,先进后出。它通过5个操作对Vector类进行扩展,允许将向量视为堆栈。HashMap:元素成对,元素可为空。HashTable:元素成对,线程安全,元素不可为空。5.1.5各种集合的特点5.2泛型泛型是程序设计语言的一种特性,允许程序员在强类型程序设计语言中编写代码时定义一些可变部分。Java中泛型的引入主要是为了提高Java程序的类型安全,避免了集合类型元素在运行期出现类型转换异常,增加了编译时类型的检查。
Students1=newStudent("001","张三"); ArrayList<Student>list=newArrayList<Student>(); list.add(s1); Studenttemp=list.get(0);//取出get数据的时候不需要时候类型转换
System.out.println(temp);5.2.1泛型的意义5.2泛型Java中的泛型主要使用在类、方法与接口中。通常是在定义类时,在类的名称后,用尖括号括起来,用大写字母(T、E、K、V等)表示一种未知类型。虽然是未知类型,但可以把它作为已知类型使用,直到产生这个类的对象时,指是是哪种类型。泛型使用在类上的用法,其语法如下:classQuestion<T>
{
To;//某个类型的变量作为其成员变量o publicQuestion(Tt)//构造方法 { o=t; }}5.2.2泛型在类中的应用5.2泛型Java中的泛型也广泛使用在接口中,泛型接口与泛型类的定义及使用基本相同。泛型接口通常被用在各种类的生产器中。其语法如下:interface接口名称<接口标示>{}interfaceinterfo<T>{publicTgetInterfo();}5.2.2泛型在接口中的应用5.3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- TOF的护理幻灯片
- 《急救知识培训》课件
- 《IT项目管理培训》课件
- 商务沟通练习测试题附答案(一)
- 《移动ERP前景》课件
- 信用管理师三级复习试题有答案
- 调查问卷设计指导课参考课件
- 《项目管理作业》课件
- 热点专题 4-1 三角函数概念与诱导公式【10类题型】(解析版)- 2025年高考数学热点题型追踪与重难点专题突破(新高考专用)
- 《酶和维生素》课件
- 房屋租赁(出租)家私清单
- 仓储货架ppt课件
- 《保健按摩师》(五级)理论知识鉴定要素细目表
- 财产保险招标评分细则表
- 培卵素是什么
- 《细菌》初中生物优秀教学设计(教案)
- PID烙铁恒温控制器设计与制作_图文
- ihaps用户手册
- 铁塔组立施工作业指导书抱杆计算
- 总生产成本年度比较表
- 新媒体运营全工作计划表(共2页)
评论
0/150
提交评论