




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学习内容 集合框架的概念集合框架的概念Java语言中的集合语言中的集合Collection接口接口Set接口接口List接口接口Map接口接口本章目标 掌握集合框架包含的内容 掌握ArrayList和LinkedList的使用 掌握HashMap的使用 掌握Iterator的使用 掌握泛型集合的使用学员1学员20如何存储每天的新闻信息?如何存储每天的新闻信息?如何存储计算机专业课程的代码与课程信息,能如何存储计算机专业课程的代码与课程信息,能够通过代码方便地获得课程信息?够通过代码方便地获得课程信息?如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储如果并不知道程序运行时会需要多少对
2、象,或者需要更复杂方式存储对象对象可以使用可以使用Java集合框架集合框架一维数组一维数组代码1代码N课程1课程N一一对应一一对应新闻1新闻N每天的新闻总数不每天的新闻总数不确定,太少浪费空确定,太少浪费空间,太多空间不足间,太多空间不足存储一个班学员信息,假定一个班容纳存储一个班学员信息,假定一个班容纳20名学员名学员为什么使用集合框架 什么是集合框架的概念什么是集合框架的概念 集合框架:是为表示和操作集合而规定的一种统一的、集合框架:是为表示和操作集合而规定的一种统一的、标准的体系结构。标准的体系结构。 任何集合框架都包含三大块内容:对外的接口、接口的任何集合框架都包含三大块内容:对外的接
3、口、接口的实现和对集合运算的算法。实现和对集合运算的算法。 接口:即表示集合的抽象数据类型。接口提供了让我们接口:即表示集合的抽象数据类型。接口提供了让我们对集合中所表示的内容进行单独操作的可能。对集合中所表示的内容进行单独操作的可能。 实现:也就是集合框架中接口的具体实现。实际它们就实现:也就是集合框架中接口的具体实现。实际它们就是那些可复用的数据结构。是那些可复用的数据结构。 算法:在一个实现了某个集合框架中的接口的对象上,算法:在一个实现了某个集合框架中的接口的对象上,完成某种有用的计算的方法,例如查找、排序等。完成某种有用的计算的方法,例如查找、排序等。 集合框架对编程有什么好处呢?集
4、合框架对编程有什么好处呢? 提高程序设计效率。提高程序设计效率。 提高程序速度和质量。集合框架通过提供对有提高程序速度和质量。集合框架通过提供对有用的数据结构和算法的高性能和高质量的实现用的数据结构和算法的高性能和高质量的实现使你的程序速度和质量得到提高。使你的程序速度和质量得到提高。 集合框架鼓励软件的复用。对于遵照标准集合集合框架鼓励软件的复用。对于遵照标准集合框架接口的新的数据结构是可复用的。框架接口的新的数据结构是可复用的。1接口接口CollectionListMap2具体类具体类ArrayListLinkedListHashMap3算法算法Java集合框架为我们提供了一套性能优良、使
5、用方便的接口和类,它们集合框架为我们提供了一套性能优良、使用方便的接口和类,它们位于位于java.util包中包中我们不必再重新发明轮子,只需学会如何使用它们,就可处理实际应用中我们不必再重新发明轮子,只需学会如何使用它们,就可处理实际应用中问题问题 Collections提供了对集合进行排序、提供了对集合进行排序、遍历等多种算法实现遍历等多种算法实现Java集合框架包含的内容SetTreeSetHashSetTreeMapJava集合框架包含的内容 Collection 接口存储一组不唯一,无序的对象 List 接口存储一组不唯一,有序插入顺序的对象 Set 接口存储一组唯一,无序的对象 M
6、ap接口存储一组键值对象,提供key到value的映射 CollectionListMapSetList接口的实现类 ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高 LinkedList采用链表存储方式。插入、删除元素时效率比较高ListArrayListLinkedListArrayList集合类 存储多条狗狗信息,获取狗狗总数,逐条打印出各条狗狗信息 通过List接口的实现类ArrayList实现该需求 元素个数不确定 要求获得元素的实际个数 按照存储顺序获取并打印元素信息ArrayList集合类public class Test1 pu
7、blic static void main(String args) Dog ououDog = new Dog(欧欧欧欧, 雪娜瑞雪娜瑞);Dog yayaDog = new Dog(亚亚亚亚, 拉布拉多拉布拉多);Dog meimeiDog = new Dog(美美美美, 雪娜瑞雪娜瑞);Dog feifeiDog = new Dog(菲菲菲菲, 拉布拉多拉布拉多);List dogs = new ArrayList();dogs.add(ououDog);dogs.add(yayaDog);dogs.add(meimeiDog);dogs.add(2, feifeiDog); / 添加添
8、加feifeiDog到指定位置到指定位置System.out.println(共计有共计有 + dogs.size() + 条狗狗。条狗狗。);System.out.println(分别是:分别是:);for (int i = 0; i dogs.size(); i+) Dog dog = (Dog) dogs.get(i);System.out.println(dog.getName() + t+ dog.getStrain();创建创建ArrayList对象并把四个对象并把四个狗狗对象放入其中狗狗对象放入其中输出狗狗的数量输出狗狗的数量获取第获取第i i个元素个元素 补充练习一 功能描述:
9、使用ArrayList类保存饭店信息,创建三个饭店的对象保存到ArrayList中,然后遍历集合输出显示,当一个饭店从ArrayList中删除后,重新输出剩下的饭店集合,效果如下图所示补充案例二 创建一个类Cat 包含属性name,在构造方法中进行初始化 添加一个方法show(),用以打印name属性的值 创建一个类CatTest,添加main方法,实现 创建一个ArrayList,向其中添加几个Cat对象 遍历该集合,并且对每个Cat对象调用show()方法 ArrayList集合类 扩充以下几部分功能 删除指定位置的狗狗,如第一个狗狗 删除指定的狗狗,如删除feifeiDog对象 判断集合
10、中是否包含指定狗狗 List接口提供相应方法remove()、contains(),直接使用即可 ArrayList集合类public class Test2 public static void main(String args) / 1、创建多个狗狗对象、创建多个狗狗对象/ 2、创建、创建ArrayList集合对象并把多个狗狗对象放入其中集合对象并把多个狗狗对象放入其中System.out.println(删除之前共计有删除之前共计有 +dogs.size() + 条狗狗。条狗狗。);dogs.remove(0);dogs.remove(feifeiDog);System.out.prin
11、tln(n删除之后还有删除之后还有 + dogs.size() + 条狗狗。条狗狗。);if(dogs.contains(meimeiDog)System.out.println(n集合中包含美美的信息集合中包含美美的信息);elseSystem.out.println(n集合中不包含美美的信息集合中不包含美美的信息);删除第一个狗狗和删除第一个狗狗和feifeiDog判断是否包含指定狗狗判断是否包含指定狗狗ArrayList集合类 List接口常用方法 方法名方法名说说 明明boolean add(Object o)在列表的末尾顺序添加元素,起始索引位置从0开始void add(int in
12、dex,Object o)在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间int size()返回列表中的元素个数Object get(int index)返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换boolean contains(Object o)判断列表中是否存在指定元素boolean remove(Object o) 从列表中删除元素从列表中删除指定位置元素,起始索引位置从0开始练习添加多个企鹅信息到List中 需求说明: 把多个企鹅的信息添加到集合中 查看企鹅的数量 遍历所有企鹅的信息 删除集合中部分企鹅的元素 判断集合中是否包含
13、指定企鹅 LinkedList集合类 在集合任何位置头部、中间、尾部添加、获取、删除狗狗对象 插入、删除操作频繁时,可使用LinkedList来提高效率 LinkedList还额外提供对头部和尾部元素进行添加和删除操作的方法 LinkedList集合类3-2public class Test3 public static void main(String args) / 创建多个狗狗对象创建多个狗狗对象LinkedList dogs = new LinkedList();dogs.add(ououDog);dogs.add(yayaDog);dogs.addLast(meimeiDog);do
14、gs.addFirst(feifeiDog);Dog dogFirst= (Dog)dogs.getFirst();System.out.println(第一条狗狗昵称是第一条狗狗昵称是+dogFirst.getName() );Dog dogLast= (Dog)dogs.getLast();System.out.println(最后一条狗狗昵称是最后一条狗狗昵称是+dogLast.getName();dogs.removeFirst();dogs.removeLast();创建创建LinkedList集合对象并把集合对象并把多个狗狗对象放入其中多个狗狗对象放入其中获取第一条狗狗信息获取第一
15、条狗狗信息获取最后一条狗狗信息获取最后一条狗狗信息删除第一个狗狗和最后删除第一个狗狗和最后一个狗狗一个狗狗LinkedList集合类 LinkedList的特殊方法方法名方法名说说 明明voidaddFirst(Object o)在列表的首部添加元素voidaddLast(Object o)在列表的末尾添加元素Object getFirst()返回列表中的第一个元素Object getLast()返回列表中的最后一个元素Object removeFirst()删除并返回列表中的第一个元素Object removeLast()删除并返回列表中的最后一个元素补充练习三 功能描述:使用LinkedL
16、ist保存人员信息,并调用相关方法实现输出显示。效果如图所示:补充案例四 创建一个类Stack,代表堆栈其特点为:后进先出),添加方法add(Object obj)、以及delete( ),添加main方法进行验证,要求: 使用LinkedList实现堆栈 在向LinkedList中添加时,使用addLast( )方法 在从LinkedList中取出时,使用removeLast( )方法 Map接口 建立国家英文简称和中文全名间的键值映射,并通过key对value进行操作,应该如何实现数据的存储和操作呢? Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作 最常用的实现类是Hash
17、Map Map接口3-2 public class Test4 public static void main(String args) Map countries = new HashMap();countries.put(CN, 中华人民共和国中华人民共和国);countries.put(RU, 俄罗斯联邦俄罗斯联邦);countries.put(FR, 法兰西共和国法兰西共和国);countries.put(US, 美利坚合众国美利坚合众国);String country = (String) countries.get(CN);System.out.println(CN对应的国家是:对
18、应的国家是: + country);System.out.println(Map中共有中共有+countries.size()+组数据组数据);countries.remove(FR);System.out.println(Map中包含中包含FR的的key吗?吗? + countries.containsKey(FR);System.out.println( countries.keySet() ) ;System.out.println( countries.values() );System.out.println( countries );使用使用HashMap存储多存储多组键值对组键值
19、对获取获取Map元素个数元素个数删除指定元素,判断是删除指定元素,判断是否包含指定元素否包含指定元素显示键集、值集和键值对集显示键集、值集和键值对集获取指定元素的值获取指定元素的值Map接口 Map接口常用方法方法名方法名说说 明明Object put(Object key, Object val)以“键-值对”的方式进行存储Object get (Object key)根据键返回相关联的值,如果不存在指定的键,返回nullObject remove (Object key)删除由指定的键映射的“键-值对”int size()返回元素个数Set keySet ()返回键的集合Collectio
20、n values ()返回值的集合booleancontainsKey (Object key)如果存在由指定的键映射的“键-值对”,返回true集合类对比 Vector和ArrayList的异同 实现原理相同,功能相同,很多情况下可以互用 两者的主要区别如下 Vector线程安全,ArrayList重速度轻安全,线程非安全 长度需增长时,Vector默认增长一倍,ArrayList增长50% Hashtable和HashMap的异同 实现原理相同,功能相同,在很多情况下可以互用 两者的主要区别如下 Hashtable继承Dictionary类,HashMap实现Map接口 Hashtable
21、线程安全,HashMap线程非安全 Hashtable不允许null值,HashMap允许null值开发过程中,最好使用开发过程中,最好使用ArrayList和和HashMap练习根据宠物昵称查找宠物 需求说明: 根据宠物昵称查找对应宠物,如果找到,显示宠物信息,否则给出错误提示 迭代器Iterator 如何遍历List集合呢? 方法1:通过for循环和get()方法配合实现遍历 方法2:通过迭代器Iterator实现遍历 所有集合接口和类都没有提供相应遍历方法,而是由Iterator实现集合遍历 Collection 接口的iterate()方法返回一个Iterator,然后通过Iterat
22、or接口的两个方法可实现遍历 boolean hasNext(): 判断是否存在另一个可访问的元素 Object next(): 返回要访问的下一个元素迭代器Iterator2-2public class Test5 public static void main(String args) / 1、创建多个狗狗对象、创建多个狗狗对象Dog ououDog = new Dog(欧欧欧欧, 雪娜瑞雪娜瑞);/ 2、创建、创建ArrayList集合对象并把多个狗狗对象放入其中集合对象并把多个狗狗对象放入其中List dogs = new ArrayList ();dogs.add(ououDog);
23、System.out.println(使用使用Iterator遍历,所有狗狗昵称和品种是遍历,所有狗狗昵称和品种是:);Iterator it = dogs.iterator();while (it.hasNext() Dog dog = (Dog) it.next();System.out.println(dog.getName()+t+dog.getStrain();通过迭代器依次输出所通过迭代器依次输出所有狗狗的信息有狗狗的信息练习迭代List中企鹅信息 需求说明: 使用ArrayList和LinkedList存储多个企鹅信息,然后统一使用Iterator进行遍历 泛型集合 把任何类型对
24、象通过add(Object obj) 放入List中,认为只是Object类型 通过get(int index) 取出List中元素时必须进行强制类型转换,繁琐而且容易出现异常 使用Map的put(Object key, Object value)和get (Object key)存取对象时存在同样问题 使用Iterator的next()方法获取元素时存在同样问题 JDK5.0中通过引入泛型有效的解决了这个问题 JDK5.0使用泛型改写了集合框架中的所有接口和类泛型集合3-2public class Test6 public static void main(String args) / 1、创建多个狗狗对象、创建多个狗狗对象Dog dog1 = new Dog(欧欧欧欧, 雪娜瑞雪娜瑞);/ 2、创建、创建ArrayList集合对象并把多个狗狗对象放入其中集合对象并把多个狗狗对象放入其中List dogs = new ArrayList();dogs.add(dog1);/dogs.add(hello); / 3、 显示第三个元素的信息显示第三个元素的信息Dog dog = dogs.get(2); System.out.println(第三个狗狗的信息如下:第三个狗狗的信息如下:);System.out.println(dog.getName() + t + dog.getS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国强力风扳手数据监测研究报告
- 篮球比赛赛事官方合作伙伴权益及商务合作合同
- 二零二五年度企业社保代缴与健康管理服务合同
- 二零二五年度祛斑产品研发与质量检测服务合同
- 2025年度高空作业安全协议书(高空桥梁油漆涂装安全协议)
- 公对公交易合同模板(2025年度):大数据分析与应用合作协议
- 二零二五年度个人小额贷款合同规范
- 二零二五年度精密仪器委托代工保密合同
- 2025年度水电安装工程设计与施工一体化分包合同
- 2025年度智慧城市路灯节能采购合同
- 2022新教材苏教版科学5五年级下册全册教学设计
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
- 各岗位说明书汇总1
- 下肢深静脉血栓课件(精品)
- 2022年档案管理员资格考试题库及答案-精简版
- 平江路历史街区保护规划与实践
- 危险品识别标签
- jw甲级设计院十六层医院综合楼全套电气施工图纸103张含多大样图
- 湖南省GMP现场检查缺陷项目整改指导原则
- EN248表面处理测试标准
- 云南省普通初中学生成长记录
评论
0/150
提交评论