java集合框架PPT课件

上传人:公**** 文档编号:591460622 上传时间:2024-09-17 格式:PPT 页数:39 大小:700KB
返回 下载 相关 举报
java集合框架PPT课件_第1页
第1页 / 共39页
java集合框架PPT课件_第2页
第2页 / 共39页
java集合框架PPT课件_第3页
第3页 / 共39页
java集合框架PPT课件_第4页
第4页 / 共39页
java集合框架PPT课件_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《java集合框架PPT课件》由会员分享,可在线阅读,更多相关《java集合框架PPT课件(39页珍藏版)》请在金锄头文库上搜索。

1、第三章集合框架1预习检查nList、Map是否都继承自Collection接口 ?n和数组采用相同存储结构的集合类型是什么?nIterator接口的作用是什么?集中测试集中测试集中测试集中测试2回顾与作业点评2-1n写出运行结果public class Test public static void main(String args) int a = 0, 1, 2, 3, 4; int sum = 0; try for (int i = 1; i 6; i+) sum = sum + ai; (sum= + sum); catch (ArrayIndexOutOfBoundsExceptio

2、n e) (数组越界数组越界); finally (程序结束程序结束); 数组越界数组越界 程序结束程序结束 public class Test public static void main(String args) int numOne = 10; int numTwo = 0; try int c = numOne/numTwo; catch (ArithmeticException ex) (除数不能为除数不能为0); catch (Exception ex) (发现异常发现异常); finally (这是这是finally); 除数能不为除数能不为0这是这是finally publi

3、c class Test public void add(int i) throws NullPointerException if(i=0) throw new NullPointerException(); (add出现异常出现异常); public static void main(String args) Test t = new Test(); try t.add(0); (add方法返回方法返回); catch(Exception e) (捕获异常捕获异常); 捕获异常捕获异常 代码阅读代码阅读代码阅读代码阅读3回顾与作业点评2-2n点评作业的提交情况和共性问题作业点评作业点评作业

4、点评作业点评4本章任务n使用List保存和输出宠物信息n根据宠物昵称查找宠物n使用Iterator迭代显示存储在Map中的企鹅信息n使用泛型集合显示存储在Map中的企鹅信息5本章目标n掌握集合框架包含的内容n掌握ArrayList和LinkedList的使用n掌握HashMap的使用n掌握Iterator的使用n掌握泛型集合的使用6为什么使用集合框架学学员员1学学员员20代码代码1代码代码Nn如何存储每天的新闻信息?n如何存储ACCP课程的代码与课程信息,能够通过代码方便地获得课程信息?如果并不知道程序运行时会需要多少对象,或者需要如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对

5、象更复杂方式存储对象可以使用可以使用Java集合框架集合框架一维数组一维数组课程课程1课程课程N一一对应一一对应新闻新闻1新闻新闻N每天的新闻总数不确定,太少每天的新闻总数不确定,太少浪费空间,太多空间不足浪费空间,太多空间不足n存储一个班学员信息,假定一个班容纳20名学员71接口接口CollectionMap2具体类具体类3算法算法Collections提供了对集合进行排序、提供了对集合进行排序、遍历等多种算法实现遍历等多种算法实现Java集合框架包含的内容2-1ListSetArrayListLinkedListHashMapTreeSetHashSetTreeMapnJava集合框架提供

6、了一套性能优良、使用方便的接口和类,它们位于包中8Java集合框架包含的内容2-2nCollection接口存储一组不唯一,无序的对象nList接口存储一组不唯一,有序(插入顺序)的对象nSet接口存储一组唯一,无序的对象nMap接口存储一组键值对象,提供key到value的映射CollectionListMapSet9List接口的实现类nArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高nLinkedList采用链表存储方式。插入、删除元素时效率比较高ListArrayListLinkedList10ArrayList集合类5-1n如何存储多

7、条狗狗信息,获取狗狗总数,逐条打印出各条狗狗信息?n通过List接口的实现类ArrayList实现该需求u元素个数不确定u要求获得元素的实际个数u按照存储顺序获取并打印元素信息问题问题问题问题分析分析分析分析演示示例1:使用ArrayList集合类111ArrayList集合类5-2 /创建四个狗狗对象创建四个狗狗对象 List dogs = new ArrayList(); dogs.add(ououDog); dogs.add(yayaDog);dogs.add(meimeiDog);dogs.add(2, feifeiDog); / 添加添加feifeiDog到指定位置到指定位置Syst

8、em.out.println(共计有共计有 + dogs.size() + 条狗狗。条狗狗。);System.out.println(分别是:分别是:);for (int i = 0; i dogs.size(); i+) Dog dog = (Dog) dogs.get(i); 创建创建ArrayList对象对象并存储狗狗并存储狗狗输出狗狗的数量输出狗狗的数量逐个获取个元素逐个获取个元素 n小结:使用ArrayList存储元素12ArrayList集合类5-3n扩充以下几部分功能u删除指定位置的狗狗,如第一个狗狗u删除指定的狗狗,如删除feifeiDog对象u判断集合中是否包含指定狗狗n使用

9、List接口提供的remove()、contains()方法问题问题问题问题分析分析分析分析演示示例2:使用ArrayList集合类213ArrayList集合类5-4 dogs.remove(0); dogs.remove(feifeiDog); if(dogs.contains(meimeiDog)System.out.println(n集合中包含美美的信息集合中包含美美的信息); elseSystem.out.println(n集合中不包含美美的信息集合中不包含美美的信息);删除第一个狗狗和指定狗狗删除第一个狗狗和指定狗狗判断是否包含指定狗狗判断是否包含指定狗狗n小结:使用ArrayLi

10、st移除、判断元素14ArrayList集合类5-5nList接口常用方法方法名说 明boolean add(Object o)在列表的末尾顺序添加元素,在列表的末尾顺序添加元素,起始索引位置从起始索引位置从0开始开始void add(int index,Object o)在指定的索引位置添加元素。在指定的索引位置添加元素。索引位置必须介于索引位置必须介于0和列表中元素个数之间和列表中元素个数之间int size()返回列表中的元素个数返回列表中的元素个数Object get(int index)返回指定索引位置处的元素。返回指定索引位置处的元素。取出的元素是取出的元素是Object类型,使用

11、前需要进行强制类型转换类型,使用前需要进行强制类型转换boolean contains(Object o)判断列表中是否存在指定元素判断列表中是否存在指定元素boolean remove(Object o)从列表中删除元素从列表中删除元素Objectremove(int index)从列表中删除指定位置元素,从列表中删除指定位置元素,起始索引位置从起始索引位置从0开始开始15学员操作使用List存储企鹅信息n需求说明u把多个企鹅的信息添加到集合中u查看企鹅的数量及所有企鹅的信息u删除集合中部分企鹅的元素u判断集合中是否包含指定企鹅练习练习练习练习完成时间:20分钟16共性问题集中讲解n常见问题

12、及解决办法n代码规范问题n调试技巧共性问题集中讲解17LinkedList集合类3-1n在集合任何位置(头部、中间、尾部)添加、获取、删除狗狗对象n插入、删除操作频繁时,可使用LinkedList来提高效率nLinkedList提供对头部和尾部元素进行添加和删除操作的方法问题问题问题问题分析分析分析分析演示示例3:使用LinkedList集合类18LinkedList集合类3-2 / 创建多个狗狗对象创建多个狗狗对象 LinkedList dogs = new LinkedList(); dogs.add(ououDog); dogs.add(yayaDog); dogs.addLast(me

13、imeiDog); dogs.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集合集合对象并存储狗狗对象对象并存储狗狗对象获取第一条

14、狗狗信息获取第一条狗狗信息获取最后一条狗狗信息获取最后一条狗狗信息删除第一个狗狗和最后一个狗狗删除第一个狗狗和最后一个狗狗n小结:使用LinkedList存储元素19LinkedList集合类3-3nLinkedList的特殊方法方法名方法名说说 明明void addFirst(Object o)在列表的首部添加元素在列表的首部添加元素void addLast(Object o)在列表的末尾添加元素在列表的末尾添加元素Object getFirst()返回列表中的第一个元素返回列表中的第一个元素Object getLast()返回列表中的最后一个元素返回列表中的最后一个元素Object rem

15、oveFirst()删除并返回列表中的第一个元素删除并返回列表中的第一个元素Object removeLast()删除并返回列表中的最后一个元素删除并返回列表中的最后一个元素20小结n集合框架有何好处?nJava集合框架中包含哪些接口和类?nArrayList和LinkedList有何异同?提问提问提问提问21Map接口3-1n建立国家英文简称和中文全名间的键值映射,并通过key对value进行操作,应该如何实现数据的存储和操作呢?nMap接口专门处理键值映射数据的存储,可以根据键实现对值的操作u最常用的实现类是HashMap问题问题问题问题分析分析分析分析演示示例4:使用HashMap集合类

16、22Map接口3-2 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(Map中共有中共有+countries.size() +组数据组数据); countries.remove(FR); Sys

17、tem.out.println(Map中包含中包含FR的的key吗?吗? + countries.containsKey(FR); System.out.println( countries.keySet() ) ; System.out.println( countries.values() ); System.out.println( countries );使用使用HashMap存储存储多组键值对多组键值对获取获取Map元素个数元素个数删除指定元素,判断删除指定元素,判断是否包含指定元素是否包含指定元素显示键集、值集和键值对集显示键集、值集和键值对集获取指定元素的值获取指定元素的值n小结

18、:使用HashMap存储元素23Map接口3-3nMap接口常用方法方法名说 明Object put(Object key, Object val)以以“键键-值对值对”的方式进行存储的方式进行存储Object get (Object key)根据键返回相关联的值,如果不存在指定根据键返回相关联的值,如果不存在指定的键,返回的键,返回nullObject remove (Object key)删除由指定的键映射的删除由指定的键映射的“键键-值对值对”int size()返回元素个数返回元素个数Set keySet ()返回键的集合返回键的集合Collection values ()返回值的集合

19、返回值的集合booleancontainsKey (Object key)如果存在由指定的键映射的如果存在由指定的键映射的“键键-值对值对”,返回返回true24学员操作根据宠物昵称查找宠物n需求说明u根据宠物昵称查找对应宠物,如果找到,显示宠物信息,否则给出错误提示练习练习练习练习完成时间:15分钟25共性问题集中讲解n常见问题及解决办法n代码规范问题n调试技巧共性问题集中讲解26迭代器Iterator2-1n如何遍历Map集合呢?n方法1:通过迭代器Iterator实现遍历u获取Iterator:Collection接口的iterator()方法uIterator的方法booleanhas

20、Next():判断是否存在另一个可访问的元素Objectnext():返回要访问的下一个元素n方法2:增强for循环问题问题问题问题分析分析分析分析演示示例5:使用Iterator和增强型for循环遍历Map集合27迭代器Iterator2-2Set keys=dogMap.keySet(); /取出所有取出所有key的集合的集合Iterator it=keys.iterator(); /获取获取Iterator对象对象while(it.hasNext()String key=(String)it.next(); /取出取出keyDog dog=(Dog)dogMap.get(key); /根

21、据根据key取出对应的值取出对应的值System.out.println(key+t+dog.getStrain();for(元素类型t元素变量x:数组或集合对象)引用了x的java语句n小结:遍历Mapu迭代器Iteratoru增强for循环语法语法语法语法28学员操作使用Iterator迭代Map中的企鹅信息n需求说明u使用HashMap存储多个企鹅信息,然后统一使用Iterator进行遍历练习练习练习练习完成时间:15分钟29共性问题集中讲解n常见问题及解决办法n代码规范问题n调试技巧共性问题集中讲解30泛型集合3-1n如何解决以下强制类型转换时容易出现的异常问题?uList的get(i

22、ntindex)方法获取元素uMap的get(Objectkey)方法获取元素uIterator的next()方法获取元素n通过泛型u使用泛型改写了集合框架中的所有接口和类问题问题问题问题分析分析分析分析演示示例6:使用泛型集合31泛型集合3-2 /创建创建ArrayList集合对象并存储狗狗集合对象并存储狗狗 List dogs = new ArrayList(); dogs.add(dog1); /dogs.add(hello); / 显示第三个元素的信息显示第三个元素的信息 Dog dog = dogs.get(2); /使用使用foreach遍历遍历dogs对象对象 for(Dog d

23、og:dogs) 标记元素类型标记元素类型类型不符,出现编译错误类型不符,出现编译错误无需类型强制转换无需类型强制转换 n小结:泛型集合32泛型集合3-3 Map dogMap=new HashMap(); dogMap.put(ououDog.getName(),ououDog); /*通过迭代器依次输出集合中所有狗狗的信息通过迭代器依次输出集合中所有狗狗的信息*/ Set keys=dogMap.keySet(); /取出所有取出所有key的集合的集合 Iterator it=keys.iterator(); /获取获取Iterator对象对象 while(it.hasNext()Stri

24、ng key=it.next(); /取出取出keyDog dog=dogMap.get(key); /根据根据key取出对应的值取出对应的值 /使用使用foreach语句输出集合中所有狗狗的信息语句输出集合中所有狗狗的信息 for(String key:keys)Dog dog=dogMap.get(key); /根据根据key取出对应的值取出对应的值 标记键标记键-值类型值类型标记键类型标记键类型无需类型转换无需类型转换33学员操作使用泛型集合显示存储在Map中的企鹅信息n需求说明u在上机3的基础上,为企鹅添加一个编号,并作为键存储多个企鹅信息到应用泛型的HashMap集合u使用Itera

25、tor、foreach语句进行遍历n使用包装类Integer标记Map的键类型uMap练习练习练习练习提示提示提示提示完成时间:15分钟34共性问题集中讲解n常见问题及解决办法n代码规范问题n调试技巧共性问题集中讲解35总结Collection集合(不唯一,无序)ArrayList和LinkedList遍历集合的方法存储方式执行效率集合框架List集合(不唯一、有序)Set集合(唯一、无序)ArrayList集合LinkedList集合ArrayList:长度可变的数组,存储空间连续LinkedList集合:链表式结构存储ArrayList:遍历和随机访问效率高LinkedList集合:插入和

26、删除效率高增强for循环遍历迭代器Iterator遍历36相关学习资源学习平台学生用书使用使用JavaJava实现面向对象编程实现面向对象编程“使用使用JavaJava实现面向对象编程实现面向对象编程”课程课程37作业n课后作业u教员备课时根据班级情况在此添加内容,应区分必做、选做内容,以满足不同层次学员的需求n预习作业u预习下一章学生用书,完成预习作业说明进程和线程的区别说明创建线程的方式有哪两种?线程的生命周期可分别几个阶段,各是什么阶段?使用线程的什么方法可以设置线程休眠、线程的强制执行、线程的礼让?什么情况下需要进行线程的同步,线程同步有几种方式?38ACCP8.0职业教育研究院北京阿博泰克北大青鸟信息技术有限公司39

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号