版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java集合框架(习题)集合框架KeyPointCollection接口、Set接口、List接口基本操作List接口及其实现类Set接口及其实现类迭代遍历Hash算法与hashCode方法Comparable接口Map接口及其实现类遍历Map*泛型练习填空Collection接口的特点是元素是对象;List接口的特点是元素有(有|无)顺序,可以(可以|不可以)重复;Set接口的特点是元素无(有|无)顺序,不可以(可以|不可以)重复;Map接口的特点是元素是键值对,其中值可以重复,键不可以重复。(List)有如下代码importjava.util.*;publicclassTestListpu
2、blicstaticvoidmain(Stringargs)Listlist=newArrayList();list.add(“Hello”);list.add(“World”);list.add(1,“Learn”);list.add(1,“Java”);printList(list);publicstaticvoidprintList(Listlist)for(Objectobj:list)Stringstr=(String)obj;System.out.println(obj);要求:把/1处的代码补充完整,要求输出list中所有元素的内容写出程序执行的结果HellojavaLearnW
3、orld如果要把实现类由ArrayList换为LinkedList,应该改哪里?ArrayList和LinkedList使用上有什么区别?实现上有什么区别?把实例化的语句改为newLinkedList();ArrayList数组实现查询快增删慢LinkedList链表实现查询慢增删快4)如果要把实现类由ArrayList换为Vector,应该改哪里?ArrayList和Vector使用上有什么区别?实现上有什么区别?ArrayList是线程不同步的,轻量级的,线程不安全,速度快Vector是线程同步的,多线程访问比较安全,速度慢3.(List)写出下面程序的运行结果importjava.uti
4、l.*;publicclassTestListpublicstaticvoidmain(Stringargs)Listlist=newArrayList();list.add(“Hello”)list.add(“World”)list.add(“Hello”)list.add(“Learn”)list.remove(“Hello”)list.remove(0);for(inti=0;ilist.size();i+)System.out.println(list.get(i);HelloLearn4.(Set,List)importjava.util.*;publicclassTestListS
5、etpublicstaticvoidmain(Stringargs)Listlist=newArrayList();list.add(“Hello”)list.add(“Learn”)list.add(“Hello”)list.add(“Welcome”)Setset=newHashSet();set.addAll(list);System.out.println(set.size();选择正确答案A编译不通过B编译通过,运行时异常C编译运行都正常,/输出HashSet中不能放重复值D编译运行都正常,输出45.(List)已知有一个Worker类如下:publicclassWorkerpriv
6、ateintage;privateStringname;privatedoublesalary;publicWorker()publicWorker(Stringname,intage,doublesalary)=name;this.age=age;this.salary=salary;publicintgetAge()returnage;publicvoidsetAge(intage)this.age=age;publicStringgetName()returnname;publicvoidsetName(Stringname)=name;publicdoublegetSalary()re
7、turnsalary;publicvoidsetSalary(doublesalary)this.salary=salary;publicvoidwork()System.out.println(name+“work”);完成下面的要求创建一个List,在List中增加三个工人,基本信息如下:姓名年龄工资zhang3183000li4253500wang5223200在li4之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300删除wang5的信息4)利用for循环遍历,打印List中所有工人的信息5)利用迭代遍历,对List中所有的工人调用work方法。6)为Worker类添加
8、equals方法6.(Set,Hash算法)为上一题的Worker类,在添加完equals方法的基础上,添加一个hashCode方法。publicinthashCode()/1有几种写法:1)return0;2)intresult=0;if(name!=null)result=name.hashCode();returnresult+age;3)returnsuper.hashCode();现在要把Worker类放入HashSet中,并希望在HashSet中没有重复元素,则下面说法正确的是:A.三种写法都正确B.1),2)写法正确,2)效率更高C.2)写法正确,1),3)写法都不正确7.(Se
9、t,Hash算法,方法覆盖)代码改错importjava.util.*;classWorkerStringname;intage;doublesalary;publicWorker()publicWorker(Stringname,intage,doublesalary)=name;this.age=age;this.salary=salary;publicinthashCode()/hashCode必须声明为公共的。return(int)(name.hashCode()+age+salary);返回值类型为整形(/equals方法实现有错publicbooleanequals(Workerw
10、)if(=name&w.salary=salary&w.age=age)returntrue;elsereturnfalse;publicclassTestWorkerpublicstaticvoidmain(Stringargs)Setset=newHashSet();set.add(newWorker(“tom”,18,2000);set.add(newWorker(“tom”,18,2000);set.add(0,newWorker(“jerry”,18,2000);/HashSet中没有定义带下标的add方法。System.out.println(set.size();8.(Set,H
11、ash算法)在前面的Worker类基础上,为Worker类增加相应的方法,使得Worker放入HashSet中时,Set中没有重复元素。并编写相应的测试代码。classWorkerStringname;intage;doublesalary;publicWorker()publicWorker(Stringname,intage,doublesalary)=name;this.age=age;this.salary=salary;publicinthashCode()return(int)(name.hashCode()+age+salary);publicbooleanequals(Work
12、erw)if(=name&w.salary=salary&w.age=age)returntrue;elsereturnfalse;9.(Set,Comparable接口)在前面的Worker类基础上,为Worker类添加相应的代码,使得Worker对象能正确放入TreeSet中。并编写相应的测试代码。注:比较时,先比较工人年龄大小,年龄小的排在前面。如果两个工人年龄相同,则再比较其收入,收入少的排前面。如果年龄和收入都相同,则根据字典顺序比较工人姓名。例如:有三个工人,基本信息如下:姓名年龄工资zhang3181500li4181500wang5181600zhao6172000放入Tree
13、Set排序后结果为:zhao6li4zhang3wang5importjava.util.HashSet;publicclassTest1publicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstubHashSeths=newHashSet();Workerw1=newWorker(zhang3,18,1500);Workerw2=newWorker(lis4,18,1500);Workerw3=newWorker(wang5,18,1600);Workerw4=newWorker(zhao6,17,2000);hs.add(w1);
14、hs.add(w2);hs.add(w3);hs.add(w4);System.out.println(hs.size();System.out.println(hs);classWorkerimplementsComparableStringname;intage;doublesalary;publicWorker()publicWorker(Stringname,intage,doublesalary)=name;this.age=age;this.salary=salary;OverridepublicintcompareTo(Workero)/TODOAuto-generatedmet
15、hodstubif(this.age!=o.age)returnthis.age-o.age;elseif(this.salary!=o.salary)/Integerinteger1=newInteger(this.salary)returnnewDouble(this.salary).compareTo(newDouble(o.salary);elseif(.equals()pareTo();return0;OverridepublicinthashCode()finalintprime=31;intresult=1;result=prime*result+age;result=prime
16、*result+(name=null)?0:name.hashCode();longtemp;temp=Double.doubleToLongBits(salary);result=prime*result+(int)(temp人(temp32);returnresult;Overridepublicbooleanequals(Objectobj)if(this=obj)returntrue;if(obj=null)returnfalse;if(getClass()!=obj.getClass()returnfalse;Workerother=(Worker)obj;if(age!=other
17、.age)returnfalse;if(name=null)if(!=null)returnfalse;elseif(!name.equals()returnfalse;if(Double.doubleToLongBits(salary)!=Double.doubleToLongBits(other.salary)returnfalse;returntrue;OverridepublicStringtoString()/TODOAuto-generatedmethodstubreturnage+/+salary+/+name;(Map)关于下列Map接口中常见的方法put方法表示放入一个键值对
18、,如果键已存在则新值替换旧值,如果键不存在则增加一个键值对。remove方法接受一个参数,表示从映射中移除其映射关系的键。get方法表示返回指定键所映射的值,get方法的参数表示移除的其映射关系的键,返回值表示与key关联的值。要想获得Map中所有的键,应该使用方法ketSet,该方法返回值类型为Set集合。要想获得Map中所有的值,应该使用方法get,该方法返回值类型为指定键所映射的值。要想获得Map中所有的键值对的集合,应该使用方法entrySet,该方法返回一个Map.Entry类型所组成的Set。(Map)利用Map,完成下面的功能:从命令行读入一个字符串,表示一个年份,输出该年的世界
19、杯冠军是哪支球队。如果该年没有举办世界杯,则输出:没有举办世界杯。附:世界杯冠军以及对应的夺冠年份,请参考本章附录。publicclassBk18publicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstubBufferedReaderbr=newBufferedReader(newInputStreamReader(System.in);Stringyear=null;tryyear=br.readLine();catch(IOExceptione)/TODOAuto-generatedcatchblocke.printStackT
20、race();Mapmap=newHashMap();map.put(2002,巴西);map.put(2006,意大利);map.put(2010,南非”);if(map.containsKey(year)System.out.println(map.get(year);elseSystem.out.println(”这一年没有承办世界杯!”);(Map)已知某学校的教学课程内容安排如下:集合框架(习题)o:button=ttarget=_blankhref= HYPERLINK /showpic.html%23blogid=714a83710100ptie&url=/orignal/714
21、a8371t9dbaa80ef64e /showpic.html#blogid=714a83710100ptie&url=/orignal/714a8371t9dbaa80ef64e集合框架(习题)src= HYPERLINK file:/C:DOCUME1ADMINI1LOCALS1Tempmsohtmlclip101clip_image002.png完成下列要求:使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排。增加了一位新老师Allen教JDBCLucy改为教CoreJava遍历Map,输出所有的老师及老师教授的课程*利用Map,输出所有教JSP的老师。pu
22、blicstaticvoidmain(Stringargs)/TODOAuto-generatedmethodstubMapmap=newTreeMap();map.put(Tom,CoreJava);map.put(John,Oracle);map.put(Susan,Oracle);map.put(Jerry,JDBC);map.put(Jim,Unix);map.put(Kevin,JSP);map.put(Lucy,JSP);System.out.println(map.size();map.put(Allen,JSP);System.out.println(map.size();ma
23、p.remove(Lucy);map.put(Lucy,CoreJava);Setset=map.keySet();for(Objectobj:set)System.out.println(map.get(String)obj);for(Stringstr:set)if(map.get(str).equals(JSP)System.out.println(”教JSP的老师有:+str);(泛型)使用泛型,改写第5题packagelist;importjava.util.Iterator;importjava.util.LinkedList;publicclassTest2publicstati
24、cvoidmain(Stringargs)/TODOAuto-generatedmethodstubLinkedListll=newLinkedList();Worker1w1=newWorker1(zhang3,18,3000);Worker1w2=newWorker1(li4,25,3500);Worker1w3=newWorker1(wang5,22,3200);ll.add(w1);ll.add(w2);ll.add(w3);ll.add(1,newWorker1(zhao6,24,2200);ll.remove(w3);/用for循环遍历for(inti=0;ill.size();i
25、+)System.out.println(ll.get(i);System.out.println(=);/用迭代器遍历Iteratoriterator=ll.iterator();while(iterator.hasNext()System.out.println(iterator.next();classWorker1privateintage;privateStringname;privatedoublesalary;publicWorker1()publicWorker1(Stringname,intage,doublesalary)=name;this.age=age;this.sa
26、lary=salary;publicintgetAge()returnage;publicvoidsetAge(intage)this.age=age;publicStringgetName()returnname;publicvoidsetName(Stringname)=name;publicdoublegetSalary()returnsalary;publicvoidsetSalary(doublesalary)this.salary=salary;publicvoidwork()System.out.println(name+work);OverridepublicinthashCo
27、de()finalintprime=31;intresult=1;result=prime*result+age;returnresult;Overridepublicbooleanequals(Objectobj)if(this=obj)returntrue;if(obj=null)returnfalse;if(getClass()!=obj.getClass()returnfalse;Worker1other=(Worker1)obj;if(age!=other.age)returnfalse;returntrue;OverridepublicStringtoString()/TODOAu
28、to-generatedmethodstubreturnname+/+age+/+salary;14.(泛型)使用泛型和Map.Entry接口,改写第12题的前4问*(List)写出下面程序的输出结果importjava.util.*;classMyClassintvalue;publicMyClass()publicMyClass(intvalue)this.value=value;publicStringtoString()return“”+value;publicclassTestListpublicstaticvoidmain(Stringargs)MyClassmc1=newMyCl
29、ass(10);MyClassmc2=newMyClass(20);实例化的对象实际上就是一个对象的地址,/list中保存的是对象的引用,因此mc4,mc1,和list下标为1的对象都是指向的同一个对象MyClassmc3=newMyClass(30);Listlist=newArrayList();list.add(mc1);list.add(mc2);list.add(mc3);MyClassmc4=(MyClass)list.get(1)这句话实际上就是把mc4指向了mc2对象的那个地址MyClassmc4=(MyClass)mc2;mc4.value=50;for(inti=0;i集合
30、框架(习题)src= HYPERLINK file:/C:DOCUME1ADMINI1LOCALS1Tempmsohtmlclip101clip_image001.gif要求,完善Worker和Address类,使得Worker对象能够正确放入HashSet中:即将Worker放入HashSet中时不会出现重复元素。并编写相应测试代码。*(Map)在原有世界杯Map的基础上,增加如下功能:读入一支球队的名字,输出该球队夺冠的年份列表。例如,读入“巴西”,应当输出19581962197019942002读入“荷兰”,应当输出没有获得过世界杯*(Map)设计Account对象如下:集合框架(习题)
31、o:button=ttarget=_blankhref= HYPERLINK /showpic.html%23blogid=714a83710100ptie&url=/orignal/714a8371t9dba9df86404 /showpic.html#blogid=714a83710100ptie&url=/orignal/714a8371t9dba9df86404集合框架(习题)src= HYPERLINK file:/C:DOCUME1ADMINI1LOCALS1Tempmsohtmlclip101clip_image001.gif要求完善设计,使得该Account对象能够自动分配id
32、。给定一个List如下:Listlist=newArrayList();list.add(newAccount(10.00,“1234”);list.add(newAccount(15.00,“5678”);list.add(newAccount(0,“1010”);要求把List中的内容放到一个Map中,该Map的键为id,值为相应的Account对象。最后遍历这个Map,打印所有Account对象的id和余额。importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;
33、importjava.util.Random;importjava.util.Set;publicclassBK20publicstaticvoidmain(Stringargs)Randomran=newRandom();System.out.println(ran.nextLong();Listlist=newArrayList();list.add(newAccount(10.00,1234);list.add(newAccount(15.00,5678);list.add(newAccount(0.0,1010);Mapmap=newHashMap();for(inti=0;ilist
34、.size();i+)Accountaccount=(Account)list.get(i);map.put(account.getId(),account);SetMap.Entryset=map.entrySet();for(Map.Entryobj:set)Accountacc=(Account)obj.getValue();System.out.println(obj.getKey()+/+acc.getBalance();classAccountprivatelongid;privatedoublebalance;privateStringpassword;publicAccount
35、()publicAccount(doublebalance,Stringpassword)this.id=newRandom().nextLong();this.balance=balance;this.password=password;publiclonggetId()returnid;publicvoidsetId(longid)this.id=id;publicdoublegetBalance()returnbalance;publicvoidsetBalance(doublebalance)this.balance=balance;publicStringgetPassword()r
36、eturnpassword;publicvoidsetPassword(Stringpassword)this.password=password;*(List)写一个函数reverseList,该函数能够接受一个List,然后把该List倒序排列。例如:Listlist=newArrayList();list.add(“Hello”);list.add(“World”);list.add(“Learn”);/此时list为HelloWorldLearnreverseList(list);/调用reverseList方法之后,list为LearnWorldHello*(Map,Hash算法)有
37、如下代码:importjava.util.*;classMyKeyintkeyValue;publicMyKey()publicMyKey(intvalue)this.keyValue=value;classMyValueStringvalue;publicMyValue()publicMyValue(Stringvalue)this.value=value;publicStringtoString()returnvalue;publicclassTestMappublicstaticvoidmain(Stringargs)Mapmap=newHashMap();MyKeykey1=newMy
38、Key(10);map.put(key1,newMyValue(“abc”);map.put(newMyKey(10),newMyValue(“cde”);System.out.println(map.get(key1);System.out.println(map.size();写出该代码的输出结果。abc2*(Id,hashCode,equals)为Worker类增加id属性,用来唯一标识一个员工。即:如果员工的id不同,则不管其姓名、年龄、工资是否相同,都认为是不同的员工。部分代码如下:classWorkerprivatefinalLongid;privateStringname;pri
39、vatedoublesalary;privateintage;/构造方法/get/set方法publicbooleanequals(Objectobj)/1此处仅判断id是否相同if(this.id=obj.id)returntrue;returnfalse;publicinthashCode()/2此处返回hashCode要求:完善构造方法和get/set方法。要求自动分配Worker的id完善equals方法。要求仅判断id是否相同/2处,如果写成return(int)(name.hashCode()+id.hashCode()+age+salary);是否正确?为什么?这里比较的dqua
40、ls方法任务只要id相同就是同一个对象,*(综合)有如下Student对象集合框架(习题)o:button=ttarget=_blankhref= HYPERLINK /showpic.html%23blogid=714a83710100ptie&url=http:/s9.sinai /showpic.html#blogid=714a83710100ptie&url=http:/s9.sinai/orignal/714a8371t9dba99085eb8集合框架(习题)src= HYPERLINK file:/C:DOCUME1ADMINI1LOCALS1Tempmsohtmlclip101c
41、lip_image001.gif其中,classNum表示学生的班号,例如“class05”。有如下ListListlist=newArrayList();list.add(newStudent(“Tom”,18,100,“class05”);list.add(newStudent(“Jerry”,22,70,“class04”);list.add(newStudent(“Owen”,25,90,“class05”);list.add(newStudent(“Jim”,30,80,“class05”);list.add(newStudent(“Steve”,28,66,“class06”);l
42、ist.add(newStudent(“Kevin”,24,100,“class04”);在这个list的基础上,完成下列要求:1)计算所有学生的平均年龄2)计算各个班级的平均分packageset;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;publicclassBK24publicstaticvoidmain(Stringargs)/TODOAuto-generat
43、edmethodstubListlist=newArrayList();list.add(newStudent(Tom,18,100,class05);list.add(newStudent(Jerry,22,70,class04);list.add(newStudent(Owen,25,90,class05);list.add(newStudent(Jim,30,80,class05);list.add(newStudent(Steve,28,66,class06);list.add(newStudent(Kevin,24,100,class04);Mapmap=newHashMap();f
44、or(inti=0;ilist.size();i+)Studentstu=list.get(i);Stringstr=stu.getClassNum();if(map.containsKey(str)Listl=(List)map.get(str);l.add(stu);elseListl=newArrayList();l.add(stu);map.put(str,l);Setset=map.keySet();Iteratoriterator=set.iterator();while(iterator.hasNext()intsum=0;ObjectobjStu=iterator.next();Listl=(List)map.get(objStu);for(inti=0;il.size();i+)sum+=(Student)l.get(i).getScore();System.out.println(sum/l.size();classStudentprivateStringname;privateintage;privateintscore;privateStringclassNum;publicStudent(Stringname,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 移动医疗营销模式研究
- 2025-2030豆奶市场发展现状调查及供需格局分析预测研究报告
- 2026儿童服装产品入市调查研究报告
- 2025-2030智慧农业灌溉技术供需研究及投资决策规划分析
- 2025-2030智慧农业技术领域供应链分析及投资风险识别规划分析研究报告
- 2025-2030智慧农业技术应用深度研究及行业创新与市场优化报告
- 2025-2030智慧农业平台发展现状技术趋势及相关投资策略分析
- 2025-2030智慧养老云平台建设现状评估服务协同分析持续改进规划研究报告
- 2025-2030智慧停车系统城市级部署难点及运营模式创新报告
- 2026年中药药理学实践技能卷及答案(专升本版)
- 湖北省云学联盟2025-2026学年高二下学期3月学科素养测评数学试卷(含答案)
- 2026江苏南通市专用通信局招聘工作人员2人(事业编制)考试参考题库及答案解析
- 2026年北京市自来水集团有限责任公司校园招聘笔试备考题库及答案解析
- 2026四川成都未来医学城第一批面向社会招聘高层次人才8人考试参考试题及答案解析
- 三年级科学下册一单元第6节《设计指南针》课件
- 2025公需课《新质生产力与现代化产业体系》考核试题库及答案
- GB/T 8918-2006重要用途钢丝绳
- GB/T 4798.7-2007电工电子产品应用环境条件第7部分:携带和非固定使用
- 中国心衰中心建设标准和流程精选课件
- GB 26687-2011食品安全国家标准复配食品添加剂通则
- 中考英语语法专题 数词 课件
评论
0/150
提交评论