




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集合框架本节目标掌握集合框架包含的内容掌握ArrayList和LinkedList的使用掌握HashSet的使用掌握HashMap的使用掌握Iterator的使用掌握泛型集合的使用学员1学员20如何存储每天的新闻信息?如何存储信息管理专业课程的代码与课程信息,能够通过代码方便地获得课程信息?如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用Java集合框架一维数组代码1……代码N课程1……课程N一一对应新闻1……新闻N每天的新闻总数不确定,太少浪费空间,太多空间不足存储一个班学员信息,假定一个班容纳20名学生为什么使用集合框架1接口CollectionListMap2具体类ArrayListLinkedListHashMap3算法Java集合框架为我们提供了一套性能优良、使用方便的接口和类,它们位于java.util包中我们不必再重新发明轮子,只需学会如何使用它们,就可处理实际应用中问题Collections提供了对集合进行排序、遍历等多种算法实现Java集合框架包含的内容SetTreeSetHashSetTreeMapJava集合框架包含的内容Collection接口存储一组不唯一,无序的对象List接口存储一组不唯一,有序(插入顺序)的对象Set接口存储一组唯一,无序的对象Map接口存储一组键值对象,提供key到value的映射CollectionListMapSetList接口的实现类ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高LinkedList采用链表存储方式。插入、删除元素时效率比较高ListArrayListLinkedList需求描述:开发一个学生管理系统,要求如下:(1)存储学生的基本信息:学号、姓名、系别、年龄。(2)对学生信息实行增加、删除基本操作(3)获取学生总数。(4)逐条输出学生的姓名和系别。通过List接口的实现类ArrayList实现该需求元素个数不确定可以获得元素的实际个数按照存储顺序获取并打印元素信息在指定位置添加学生信息删除指定的学生信息判断集合中是否包含某条学生信息创建学生类,利用有参构造方法实现初始化使用ArrayList类型存储Strudent类,实现相应的功能。(1)添加学生基本信息。(2)获取学生总数。(3)根据位置获取学生基本信息并显示。Studentno1=newStudent(2012001,"张华",20,"信息管理");Studentno2=newStudent(2012010,"王芳",20,"软件工程");Studentno3=newStudent(2012030,"赵乐",21,"网络工程");ListstudentList=newArrayList();studentList.add(no1);studentList.add(no2);studentList.add(2,no3);print(studentList);if(studentList.contains(no3)){ System.out.println("有姓名为赵乐的学生。");}else{ System.out.println("没有姓名为赵乐的学生。");}studentList.remove(1);System.out.println("\n删除第一个元素后:");print(studentList);studentList.remove(no3);System.out.println("\n删除no3学生后:");print(studentList);publicstaticvoidprint(ListstuList){ System.out.println("学生总数为:"+stuList.size()+"人"); for(inti=0;i<stuList.size();i++){ Studentstu=(Student)stuList.get(i); System.out.println(i+1+":"+stu.getDept()+"系---" +stu.getSName()); } }List接口常用方法
方法名说明booleanadd(Objecto)在列表的末尾顺序添加元素,起始索引位置从0开始voidadd(intindex,Objecto)在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间intsize()返回列表中的元素个数Objectget(intindex)返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换booleancontains(Objecto)判断列表中是否存在指定元素booleanremove(Objecto)从列表中删除元素Object remove(intindex)从列表中删除指定位置元素,起始索引位置从0开始频繁在集合任何位置(头部、中间、尾部)添加、获取、删除学生对象插入、删除操作频繁时,可使用LinkedList来提高效率LinkedList还额外提供对头部和尾部元素进行添加和删除操作的方法Studentno1=newStudent(2012001,"张华",20,"信息管理");Studentno2=newStudent(2012010,"王芳",20,"软件工程");Studentno3=newStudent(2012030,"赵乐",21,"网络工程");LinkedListstudentList=newLinkedList();studentList.add(no1);studentList.addFirst(no2);//在集合的首部添加学生信息studentList.addLast(no3);//在集合的尾部添加学生信息StudentstudentFirst=(Student)studentList.getFirst();System.out.println("第一位学生的姓名是:"+studentFirst.getSName());StudentstudentLast=(Student)studentList.getLast();System.out.println("最后一位学生的姓名是:"+studentLast.getSName());studentList.removeFirst();//删除第一条学生信息studentList.removeLast();//删除最后一条学生信息//显示删除后学生信息System.out.println("\n删除后学生人数为:"+studentList.size()+"人");for(inti=0;i<studentList.size();i++){ Studentstu=(Student)studentList.get(i); System.out.println(i+1+":"+stu.getDept()+"系---" +stu.getSName());}LinkedList的特殊方法方法名说明void addFirst(Objecto)在列表的首部添加元素void addLast(Objecto)在列表的末尾添加元素Object getFirst()返回列表中的第一个元素Object getLast()返回列表中的最后一个元素Object removeFirst()删除并返回列表中的第一个元素Object removeLast()删除并返回列表中的最后一个元素在Collection接口中,iterator()方法返回一Iterator。Iterator接口方法能以迭代方式逐个访问集合中各个元素,并安全的从Collection中除去适当的元素。Iterator接口中常用方法有以下几种。booleanhasNext():判断是否存在另一个可访问的元素。Objectnext():返回要访问的下一个元素。如果到达集合结尾,则抛出NoSuchElementException异常。voidremove():删除上次访问返回的对象。本方法必须紧跟在一个元素的访问后执行。如果上次访问后集合已被修改,方法将抛出IllegalStateException。利用Iterator对象实现集合遍历publicstaticvoidprint(ListstuList){ System.out.println("使用iterator遍历,学生总数为:"+stuList.size()+"人"); Iteratort=stuList.iterator(); while(t.hasNext()){ Studentstu=(Student)t.next(); System.out.println(stu.getDept()+"系---" +stu.getSName()); } }Set接口 Set接口也是Collection的一种扩展,而与List不同的时,在Set中的对象元素不能重复,也就是说你不能把同样的东西两次放入同一个Set容器中。它的常用具体实现有HashSet和TreeSet类。HashSetset=newHashSet();set.add("A");set.add("F");set.add("D");set.add("B");set.add("C");set.add("E");set.add("C");set.add(1);set.add(1);System.out.println(set);Iteratoriterator=set.iterator();while(iterator.hasNext()){ System.out.println(iterator.next());}Map接口Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作最常用的实现类是HashMapMap接口Map接口常用方法方法名说明Objectput(Objectkey,Objectval)以“键-值对”的方式进行存储Objectget(Objectkey)根据键返回相关联的值,如果不存在指定的键,返回nullObjectremove(Objectkey)删除由指定的键映射的“键-值对”intsize()返回元素个数SetkeySet()返回键的集合Collectionvalues()返回值的集合boolean containsKey(Objectkey)如果存在由指定的键映射的“键-值对”,返回trueMap接口
建立国家英文简称和中文全名间的键值映射,并通过key对value进行操作,应该如何实现数据的存储和操作呢?Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作最常用的实现类是HashMapMap接口
publicclassHashMapTest01{ publicstaticvoidmain(String[]args){
Mapcountries=newHashMap();
countries.put("CN","中华人民共和国"); countries.put("RU","俄罗斯联邦"); countries.put("FR","法兰西共和国"); countries.put("US","美利坚合众国");
Stringcountry=(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(countries.keySet()); System.out.println(countries.values()); System.out.println(countries); }}使用HashMap存储多组键值对获取Map元素个数删除指定元素,判断是否包含指定元素显示键集、值集和键值对集获取指定元素的值集合类对比Vector和ArrayList的异同实现原理相同,功能相同,很多情况下可以互用两者的主要区别如下Vector线程安全,ArrayList重速度轻安全,线程非安全长度需增长时,Vector默认增长一倍,ArrayList增长50%Hashtable和HashMap的异同实现原理相同,功能相同,在很多情况下可以互用两者的主要区别如下Hashtable继承Dictionary类,HashMap实现Map接口Hashtable线程安全,HashMap线程非安全Hashtable不允许null值,HashMap允许null值开发过程中,最好使用ArrayList和HashMap迭代器Iterator如何遍历List集合呢?方法1:通过for循环和get()方法配合实现遍历方法2:通过迭代器Iterator实现遍历所有集合接口和类都没有提供相应遍历方法,而是由Iterator实现集合遍历Collection接口的iterate()方法返回一个Iterator,然后通过Iterator接口的两个方法可实现遍历booleanhasNext():判断是否存在另一个可访问的元素Objectnext():返回要访问的下一个元素泛型集合把任何类型对象通过add(Objectobj)放入List中,认为只是Object类型通过get(intindex)取出List中元素时必须进行强制类型转换,繁琐而且容易出现异常使用Map的put(Objectkey,Objectvalue)和get(Objectkey)存取对象时存在同样问题使用Iterator的next()方法获取元素时存在同样问题JDK5.0中通过引入泛型有效的解决了这个问题JDK5.0使用泛型改写了集合框架中的所有接口和类泛型集合publicclassHashMapTest02{ publicstaticvoidmain(String[]args){
//1、使用HashMap存储多组国家英文简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省攀枝花市西区2024-2025学年三年级数学第二学期期末监测试题含解析
- 浙江绍兴一中2024-2025学年高三下学期语文试题3月月考试题含解析
- 2025年度企业餐饮管理合同
- 产品品牌授权合同书
- 高项第合同争议解决的国际视角
- 商业合作合同保密协议书范本
- 幼儿音乐游戏律动创编示例
- 建筑装饰施工组织与管理2流水施工原理
- TPM设备管理理论
- 三年级英语下册 Unit 3 What colour is this balloon第3课时教学设计 湘少版
- 2025-2030彩色不锈钢项目可行性研究报告
- 2025年山西省华远国际陆港集团有限公司招聘笔试参考题库含答案解析
- 装配式建筑产业发展现状、问题与对策分析
- Unit 1 Animal Friends测试卷(含答案解析)-2025新人教版七年级英语下册
- 升学规划家长讲座
- 《钢铁是怎样炼成的》每章练习及答案
- 2025年日历表全年(打印版)完整清新每月一张
- IATA空运危险货品-IATA《危险品规则》
- 酒店业股权收购居间合同
- 引水隧洞回填固结灌浆施工方案
- 【七年级下册地理人教版】七下地理期中测试卷01
评论
0/150
提交评论