版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学计算机学院JAVA中的集合框架中的集合框架UESTC学习内容 vJava语言中的集合语言中的集合vCollection接口接口vSet接口接口vList接口接口vMap接口接口UESTC学习目标v该部分作为提高内容,目标如下:该部分作为提高内容,目标如下: 掌握掌握Java集合框架集合框架 学习学习ArrayList和和LinkedList的使用的使用 掌握掌握HashMap的使用的使用 掌握掌握Iterator的使用的使用 泛型泛型UESTC学员1学员20如何存储每天的新闻信息?如何存储每天的新闻信息?如何存储计算机专业课程的代码与课程信息,能如何存储计算机专业课程的代码与课程信
2、息,能够通过代码方便地获得课程信息?够通过代码方便地获得课程信息?如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象对象可以使用可以使用Java集合框架集合框架一维数组一维数组代码1代码N课程1课程N一一对应一一对应新闻1新闻N每天的新闻总数不每天的新闻总数不确定,太少浪费空确定,太少浪费空间,太多空间不足间,太多空间不足存储一个班学员信息,假定一个班容纳存储一个班学员信息,假定一个班容纳20名学员名学员为什么使用集合框架 UESTC1接口接口CollectionListMap2具体类具体类ArrayListLinked
3、ListHashMap3算法算法 Java提供了一套性能优良、使用方便的接口和类,它们位于提供了一套性能优良、使用方便的接口和类,它们位于java.util包中。包中。 我们不必再重新发明轮子,只需学会如何使用它们。我们不必再重新发明轮子,只需学会如何使用它们。Collections提供了对集合进行排序、提供了对集合进行排序、遍历等多种算法实现遍历等多种算法实现Java集合框架包含的内容SetTreeSetHashSetTreeMapUESTCJava集合框架包含的内容v Collection 接口存储一组接口存储一组不唯一,无序不唯一,无序的对象的对象v List 接口存储一组接口存储一组不
4、唯一不唯一,有序有序(插入顺序)的对象(插入顺序)的对象v Set 接口存储一组接口存储一组唯一唯一,无序无序的对象的对象 v Map接口存储一组键值对象,提供接口存储一组键值对象,提供key到到value的映射的映射 CollectionListMapSetUESTCList接口的实现类 vArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高vLinkedList采用链表存储方式。插入、删除元素时效率比较高ListArrayListLinkedListUESTCArrayList集合类v存储多条角色信息,获取角色总数,逐条打印出各个角色信息 v
5、通过List接口的实现类ArrayList实现该需求 元素个数不确定 要求获得元素的实际个数并输出 按照存储顺序获取并打印元素信息UESTCArrayList集合类public class Test1 public static void main(String args) Hero hr = new Hero(“黄蓉黄蓉”, “桃花岛桃花岛);Hero gj = new Hero(“郭靖郭靖”, “全真派全真派);Hero lo = new Hero(“小龙女小龙女”, “古墓派古墓派);Hero ling = new Hero(“令狐冲令狐冲”, “华山派华山派);List roles =
6、 new ArrayList();roles.add(hr);roles.add(gj);roles.add(long);roles.add(0, ling); / 添加令狐冲到指定位置添加令狐冲到指定位置System.out.println(“共计有共计有” + roles.size() + “个队员。个队员。);System.out.println(分别是:分别是:);for (int i = 0; i roles.size(); i+) Hero h = (Hero) roles.get(i);System.out.println(h.getName() + t+h.getRole();
7、创建创建ArrayList对象并把四个对象并把四个角色对象放入其中角色对象放入其中输出角色的数量输出角色的数量获取第获取第i i个元素个元素 UESTC编程v要求:要求:v1、创建、创建Hero类,成员变量:姓名、门派类,成员变量:姓名、门派v2、某大陆怪兽入侵,需要三个不同门派的角、某大陆怪兽入侵,需要三个不同门派的角色组队抵抗入侵。使用集合保存角色信息,创色组队抵抗入侵。使用集合保存角色信息,创建三个角色的对象保存到中,然后遍历集合输建三个角色的对象保存到中,然后遍历集合输出显示,当一个角色阵亡后,重新输出剩下的出显示,当一个角色阵亡后,重新输出剩下的角色集合。角色集合。UESTC编程v在
8、类在类Hero中中 添加一个方法添加一个方法show(),用以打印,用以打印name和和role属性的值属性的值 v创建一个类创建一个类HeroTest,添加,添加main方法,实方法,实现现 创建一个创建一个ArrayList,向其中添加几个,向其中添加几个Hero对对象象 遍历该集合,并且对每个遍历该集合,并且对每个Hero对象调用对象调用show()方法方法 UESTCArrayList集合类v 扩充以下几部分功能 删除指定位置的角色 删除指定的角色 判断集合中是否包含指定角色v List接口提供相应方法remove()、contains(),直接使用即可 UESTCArrayList集
9、合类vList接口常用方法接口常用方法 方法名方法名说说 明明boolean add(Object o)在列表的末尾顺序添加元素,起始索引位置从0开始void add(int index,Object o)在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间int size()返回列表中的元素个数Object get(int index)返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换boolean contains(Object o)判断列表中是否存在指定元素boolean remove(Object o)从列表中删除元素Object remov
10、e(int index)从列表中删除指定位置元素,起始索引位置从0开始UESTCLinkedList集合类v 在集合任何位置(头部、中间、尾部)添加、获取、删除角色对象v 插入、删除操作频繁时,可使用LinkedList来提高效率v LinkedList还额外提供对头部和尾部元素进行添加和删除操作的方法 UESTCLinkedList集合类vLinkedList的特殊方法方法名方法名说说 明明voidaddFirst(Object o)在列表的首部添加元素voidaddLast(Object o)在列表的末尾添加元素Object getFirst()返回列表中的第一个元素Object getL
11、ast()返回列表中的最后一个元素Object removeFirst()删除并返回列表中的第一个元素Object removeLast()删除并返回列表中的最后一个元素UESTC编程v创建一个类Stack,代表堆栈(其特点为:后进先出),添加方法add(Object obj)、以及delete( ),添加main方法进行验证,要求: 使用LinkedList实现堆栈 在向LinkedList中添加时,使用addLast( )方法 在从LinkedList中取出时,使用removeLast( )方法UESTC Map接口v 建立国家英文简称和中文全名间的键值映射,并通过建立国家英文简称和中文全
12、名间的键值映射,并通过key对对value进行操作,应该如何实现数据的存储和进行操作,应该如何实现数据的存储和操作呢?操作呢? v Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作v 最常用的实现类是HashMapUESTC Map接口public class Test public static void main(String args) Map countries = new HashMap();countries.put(CN, 中华人民共和国中华人民共和国);countries.put(RU, 俄罗斯联邦俄罗斯联邦);countries.put(FR, 法兰西共和国法兰
13、西共和国);countries.put(US, 美利坚合众国美利坚合众国);String country = (String) countries.get(CN);System.out.println(CN对应的国家是:对应的国家是: + country);System.out.println(Map中共有中共有+countries.size()+组数据组数据);countries.remove(FR);System.out.println(Map中包含中包含FR的的key吗?吗? + countries.containsKey(FR);System.out.println( countrie
14、s.keySet() ) ;System.out.println( countries.values() );System.out.println( countries );使用使用HashMap存储多存储多组键值对组键值对获取获取Map元素个数元素个数删除指定元素,判断是删除指定元素,判断是否包含指定元素否包含指定元素显示键集、值集和键值对集显示键集、值集和键值对集获取指定元素的值获取指定元素的值UESTC Map接口UESTCMap接口vMap接口接口常用方法常用方法方法名方法名说说 明明Object put(Object key, Object val) 以“键-值对”的方式进行存储Ob
15、ject get (Object key)根据键返回相关联的值,如果不存在指定的键,返回nullObject remove (Object key)删除由指定的键映射的“键-值对”int size()返回元素个数Set keySet ()返回键的集合Collection values ()返回值的集合booleancontainsKey (Object key)如果存在由指定的键映射的“键-值对”,返回trueUESTC集合类对比vVector和ArrayList的异同 实现原理相同,功能相同,很多情况下可以互用 两者的主要区别如下 Vector线程安全,ArrayList重速度轻安全,线程非
16、安全 长度需增长时,Vector默认增长一倍,ArrayList增长50%vHashtable和HashMap的异同 实现原理相同,功能相同,在很多情况下可以互用 两者的主要区别如下 Hashtable继承Dictionary类,HashMap实现Map接口 Hashtable线程安全,HashMap线程非安全 Hashtable不允许null值,HashMap允许null值开发过程中,最好使用开发过程中,最好使用ArrayList和和HashMapUESTC迭代器Iteratorv 如何遍历List集合呢?v 方法1:通过for循环和get()方法配合实现遍历v 方法2:通过迭代器Itera
17、tor实现遍历 所有集合接口和类都没有提供相应遍历方法,而是由Iterator实现集合遍历 Collection 接口的iterator()方法返回一个Iterator,然后通过Iterator接口的两个方法可实现遍历boolean hasNext(): 判断是否存在另一个可访问的元素 Object next(): 返回要访问的下一个元素UESTC编程:迭代List中角色信息v需求说明: 使用ArrayList和LinkedList存储多个角色信息,然后统一使用Iterator进行遍历 UESTC泛型v 为何引入泛型?v 把任何类型对象通过add(Object obj) 放入List中,认为只
18、是Object类型v 通过get(int index) 取出List中元素时必须进行强制类型转换,繁琐而且容易出现异常v 使用Map的put(Object key, Object value)和get (Object key)存取对象时存在同样问题v 使用Iterator的next()方法获取元素时存在同样问题v JDK5.0中通过引入泛型有效的解决了这个问题v JDK5.0使用泛型改写了集合框架中的所有接口和类UESTC泛型public class Test public static void main(String args) / 1、创建多个角色对象、创建多个角色对象Hero hr =
19、 new Hero(“黄蓉黄蓉”, “桃花岛桃花岛);/ 2、创建、创建ArrayList集合对象并把多个角色对象放入其中集合对象并把多个角色对象放入其中List roles = new ArrayList();roles.add(hr);/roles.add(“张飞张飞); / 3、 显示第三个元素的信息显示第三个元素的信息Hero hero = roles.get(2); System.out.println(第三个角色的信息如下:第三个角色的信息如下:);System.out.println(hero.getName() + t + hero.getRole();/4、使用、使用Iterator遍历遍历roles对象对象System.out.println(n所有角色的信息如下:所有角色的信息如下:);Iterator it = roles.iterator();while (it.hasNext() hero = it.next();System.out.println(hero.getName() + t + hero.getRole();标记元素类型标记元素类型标记元素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 妇幼保健员班组评比水平考核试卷含答案
- 石英晶体元器件制造工岗前基础常识考核试卷含答案
- 机制砂石骨料生产工操作规范竞赛考核试卷含答案
- 杜美丝制造工安全理论能力考核试卷含答案
- 民族医院:卓越之旅-追求创新实现卓越的战略路线
- 地理学面试题目及答案
- 长沙辅警面试题目及答案
- 中央空调管道安装调试试题及答案
- 2026年神介学苑名师划重点配套试题及答案
- 2021届扬职院单招往届考生回忆版试题及答案
- 肺癌相关指南及专家共识
- (一模)东北三省三校2026年高三第一次联合模拟考试物理试卷(含答案)
- 中国遗传性视神经病变诊疗指南(2025版)
- 医疗机构心电图操作规范手册
- 2025年《公共基础知识》试题库(附含答案)
- 2026年山西水利职业技术学院单招职业技能笔试模拟试题带答案解析
- 中国玫瑰痤疮诊疗指南(2025版)
- 供应室进修汇报课件
- 炼钢厂连铸设备培训
- 老年人慢性疼痛的针灸穴位优化方案
- 2025年大学民航概论试题及答案
评论
0/150
提交评论