java 集合框架习题与答案解析Word文档格式.docx
《java 集合框架习题与答案解析Word文档格式.docx》由会员分享,可在线阅读,更多相关《java 集合框架习题与答案解析Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
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){
for(Objectobj:
list){
Stringstr=(String)obj;
System.out.println(obj);
要求:
1)把//1处的代码补充完整,要求输出list中所有元素的内容
2)写出程序执行的结果HellojavaLearnWorld
3)如果要把实现类由ArrayList换为LinkedList,应该改哪里?
ArrayList和
LinkedList使用上有什么区别?
实现上有什么区别?
把实例化的语句改为newLinkedList();
ArrayList数组实现查询快增删慢
LinkedList链表实现查询慢增删快
4)如果要把实现类由ArrayList换为Vector,应该改哪里?
ArrayList和Vector使
用上有什么区别?
ArrayList是线程不同步的,轻量级的,线程不安全,速度快
Vector是线程同步的,多线程访问比较安全,速度慢
3.(List)写出下面程序的运行结果
list.add(“Learn”);
list.remove(“Hello”);
list.remove(0);
for(inti=0;
i<
list.size();
i++){
System.out.println(list.get(i));
Hello
Learn
4.(Set,List)
publicclassTestListSet{
list.add(“Welcome”);
Setset=newHashSet();
set.addAll(list);
System.out.println(set.size());
选择正确答案
A.编译不通过
B.编译通过,运行时异常
C.编译运行都正常,//输出HashSet中不能放重复值
D.编译运行都正常,输出4
5.(List)已知有一个Worker类如下:
publicclassWorker{
privateintage;
privateStringname;
privatedoublesalary;
publicWorker(){}
publicWorker(Stringname,intage,doublesalary){
this.name=name;
this.age=age;
this.salary=salary;
publicintgetAge(){
returnage;
publicvoidsetAge(intage){
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
publicdoublegetSalary(){
returnsalary;
publicvoidsetSalary(doublesalary){
publicvoidwork(){
System.out.println(name+“work”);
完成下面的要求
1)创建一个List,在List中增加三个工人,基本信息如下:
姓名年龄工资
zhang3183000
li4253500
wang5223200
2)在li4之前插入一个工人,信息为:
姓名:
zhao6,年龄:
24,工资3300
3)删除wang5的信息
4)利用for循环遍历,打印List中所有工人的信息
5)利用迭代遍历,对List中所有的工人调用work方法。
6)为Worker类添加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.(Set,Hash算法,方法覆盖)代码改错
classWorker{
Stringname;
intage;
doublesalary;
publicWorker(){}
publicWorker(Stringname,intage,doublesalary){
publicinthashCode(){//hashCode必须声明为公共的。
return(int)(name.hashCode()+age+salary);
//返回值类型为整形(
//equals方法实现有错
publicbooleanequals(Workerw){
if(w.name==name&
&
w.salary==salary&
w.age==age){
returntrue;
}elsereturnfalse;
publicclassTestWorker{
set.add(newWorker(“tom”,18,2000));
set.add(0,newWorker(“jerry”,18,2000));
//HashSet中没有定义带下标的add方法。
8.(Set,Hash算法)在前面的Worker类基础上,为Worker类增加相应的方法,使得Worker
放入HashSet中时,Set中没有重复元素。
并编写相应的测试代码。
}
9.(Set,Comparable接口)在前面的Worker类基础上,为Worker类添加相应的代码,
使得Worker对象能正确放入TreeSet中。
注:
比较时,先比较工人年龄大小,年龄小的排在前面。
如果两个工人年龄相同,则再
比较其收入,收入少的排前面。
如果年龄和收入都相同,则根据字典顺序比较工人姓名。
例
如:
有三个工人,基本信息如下:
zhang3181500
li4181500
wang5181600
zhao6172000
放入TreeSet排序后结果为:
zhao6li4zhang3wang5
importjava.util.HashSet;
publicclassTest1{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
HashSet<
Worker>
hs=newHashSet<
();
Workerw1=newWorker("
zhang3"
18,1500);
Workerw2=newWorker("
lis4"
18,1500);
Workerw3=newWorker("
wang5"
18,1600);
Workerw4=newWorker("
zhao6"
17,2000);
hs.add(w1);
hs.add(w2);
hs.add(w3);
h