1.填空Collection接口的特点是元素是___对象______;List接口的特点是元素__有___(有|无)顺序,___不可以___(可以|不可以)重复;Set接口的特点是元素__无___(有|无)顺序,__可以____(可以|不可以)重复;Map接口的特点是元素是_键值对_____,其中_值____可以重复,____键__不可以重复。2.(List)有如下代码importjava.util.*;publicclassTestList{publicstaticvoidmain(Stringargs[]){Listlist=newArrayList();list.add(“Hello”);list.add(“World”);list.add(1,“Learn”);list.add(1,“Java”);printList(list);}publicstaticvoidprintList(Listlist){System.out.prinltn(list);}}要求:1)把//1处的代码补充完整,要求输出list中所有元素的内容2)写出程序执行的结果HelloJavaLearnWorld3)如果要把实现类由ArrayList换为LinkedList,应该改哪里?ArrayList和LinkedList使用上有什么区别?实现上有什么区别?Listlist=newLinkedList();LinkedList(更适用于频繁的插入、删除操作)4)如果要把实现类由ArrayList换为Vector,应该改哪里?ArrayList和Vector使用上有什么区别?实现上有什么区别?Listlist=newVector();Vector(古老的实现类、线程安全的,但效率要低于ArrayList)3.(List)写出下面程序的运行结果importjava.util.*;publicclassTestList{publicstaticvoidmain(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));}}}WorldLearn4.(Set,List)importjava.util.*;publicclassTestListSet{publicstaticvoidmain(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());}}选择正确答案AA.编译不通过B.编译通过,运行时异常C.编译运行都正常,输出3D.编译运行都正常,输出45.(List)已知有一个Worker类如下:publicclassWorker{privateintage;privateStringname;privatedoublesalary;publicWorker(){}publicWorker(Stringname,intage,doublesalary){this.name=name;this.age=age;this.salary=salary;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicdoublegetSalary(){returnsalary;}publicvoidsetSalary(doublesalary){this.salary=salary;}publicvoidwork(){System.out.println(name+“work”);}}完成下面的要求1)创建一个List,在List中增加三个工人,基本信息如下:姓名年龄工资zhang3183000li4253500wang5223200ArrayListL=newArrayList();L.add(newWorker(zhang3,18,3000));L.add(newWorker(li4,25,3500));L.add(newWorker(wang5,22,3200));2)在li4之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300L.add(1,newWorker(zhao6,24,330));3)删除wang5的信息L.remove(3);4)利用for循环遍历,打印List中所有工人的信息先在Worker类中重写toString方法for(inti=0;iL.size;i++)Syso(L.get(i));5)利用迭代遍历,对List中所有的工人调用work方法。Iteratorit=L.iterator();while(it.hasNext()){System.out.println(it.next());}6)为Worker类添加equals方法publicbooleanequals(Objectobj){if(this==obj)returntrue;if(obj==null)returnfalse;if(getClass()!=obj.getClass())returnfalse;Workerother=(Worker)obj;if(age!=other.age)returnfalse;if(name==null){if(other.name!=null)returnfalse;}elseif(!name.equals(other.name))returnfalse;returntrue;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中没有重复元素,则下面说法正确的是:CA.三种写法都正确B.1),2)写法正确,2)效率更高C.2)写法正确,1),3)写法都不正确7.(Set,Hash算法,方法覆盖)代码改错importjava.util.*;classWorker{Stringname;intage;doublesalary;publicWorker(){}publicWorker(Stringname,intage,doublesalary){this.name=name;this.age=age;this.salary=salary;}publicinthashCode(){//重写父类方法,权限不能小于父类returnname.hashCode()+age+salary;}publicbooleanequals(Workerw){if(w.name==name&&w.salary==salary&&w.age==age){returntrue;}elsereturnfalse;}}publicclassTestWorker{publicstaticvoidmain(Stringargs[]){Setset=newHashSet();set.add(newWorker(“tom”,18,2000));set.add(newWorker(“tom”,18,2000));set.add(0,newWorker(“jerry”,18,2000));//HashSet是无序的集合,不能在指定位置添加System.out.println(set.size());}}8.(Set,Hash算法)在前面的Worker类基础上,为Worker类增加相应的方法,使得Worker放入HashSet中时,Set中没有重复元素。并编写相应的测试代码。9.(Set,Comparable接口)在前面的Worker类基础上,为Worker类添加相应的代码,使得Worker对象能正确放入TreeSet中。并编写相应的测试代码。注:比较时,先比较工人年龄大小,年龄小的排在前面。如果两个工人年龄相同,则再比较其收入,收入少的排前面。如果年龄和收入都相同,则根据字典顺序比较工人姓名。例如:有三个工人,基本信息如下:姓名年龄工资zhang3181500li4181500wang5181600zhao6172000放入TreeSet排序后结果为:zhao6li4zhang3wang510.(Map)关于下列Map接口中常见的方法put方法表示放入一个键值对,如果键已存在则________________,如果键不存在则______________。remove方法接受___个参数,表示__________________。get方法表示_______________________,get方法的参数表示______,返回值表示_____。要想获得Map中所有的键,应该使用方法___________,该方法返回值类型为_______。要想获得Map中所有的值,应该使用方法___________,该方法返回值类型为_______。要想获得Map中所有的键值对的集合,应该使用方法___________,该方法返回一个_______类型所组成的Set。11.(Map)利用Map,完成下面的功能:从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该年没有举办世界杯,则输出:没有举办世界杯。附:世界杯冠军以及对应的夺冠年份,请参考本章附录。12.(Map)已知某学校的教学课程内容安排如下:完成下列要求:1)使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排。2)增加了一位新老师Allen教JDBC3)Lucy改为教CoreJava4)遍历Map,输出所有的老师及老师教授的课程5)*利用Map,输出所有教JSP的老师。13.(泛型)使用泛型,改写第5题14.(泛型)使用泛型和Map.Entry接口,改写第12题的前4问15.*(List)写出下面程序的输出结果importjava.util.*;classMyClass{intvalue;publicMyClass(){}publicMyClass(intvalue){this.value=value;}publicStringtoString(){return“”+value;}}publicclassTestList{publicstaticvoidmain(Stringargs[]){MyClassmc1=newMyClass(10);MyClassmc2=newMyClass(20);MyClassmc3=newMyClass(30);Listlist=newArrayList();list.add(mc1);list.add(mc2);list.add(mc3);MyClassmc4=(MyClass)list.get(1);mc4.value=50;for(inti=0;ilist.size();i++){System.out.println(list.get
本文标题:集合练习题
链接地址:https://www.777doc.com/doc-1957310 .html