java集合框架习题和答案及解析文档格式.docx

上传人:b****1 文档编号:5761469 上传时间:2023-05-05 格式:DOCX 页数:35 大小:23.41KB
下载 相关 举报
java集合框架习题和答案及解析文档格式.docx_第1页
第1页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第2页
第2页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第3页
第3页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第4页
第4页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第5页
第5页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第6页
第6页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第7页
第7页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第8页
第8页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第9页
第9页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第10页
第10页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第11页
第11页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第12页
第12页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第13页
第13页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第14页
第14页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第15页
第15页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第16页
第16页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第17页
第17页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第18页
第18页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第19页
第19页 / 共35页
java集合框架习题和答案及解析文档格式.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java集合框架习题和答案及解析文档格式.docx

《java集合框架习题和答案及解析文档格式.docx》由会员分享,可在线阅读,更多相关《java集合框架习题和答案及解析文档格式.docx(35页珍藏版)》请在冰点文库上搜索。

java集合框架习题和答案及解析文档格式.docx

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);

hs.add(w4);

System.out.println(hs.size());

System.out.println(hs);

classWorkerimplementsComparable<

{

Stringname;

intage;

doublesalary;

publicWorker(){}

publicWorker(Stringname,intage,doublesalary){

this.name=name;

this.age=age;

this.salary=salary;

@Override

publicintcompareTo(Workero){

if(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(this.name.equals(o.name)){

returnpareTo(o.name);

return0;

publicinthashCode(){

finalintprime=31;

intresult=1;

result=prime*result+age;

result=prime*result+((name==null)?

0:

name.hashCode());

longtemp;

temp=Double.doubleToLongBits(salary);

result=prime*result+(int)(temp^(temp>

>

32));

returnresult;

publicbooleanequals(Objectobj){

if(this==obj)

returntrue;

if(obj==null)

returnfalse;

if(getClass()!

=obj.getClass())

Workerother=(Worker)obj;

if(age!

=other.age)

if(name==null){

if(other.name!

=null)

}elseif(!

name.equals(other.name))

if(Double.doubleToLongBits(salary)!

=Double

.doubleToLongBits(other.salary))

publicStringtoString(){

returnage+"

/"

+salary+"

+name;

 

10.(Map)关于下列Map接口中常见的方法

put方法表示放入一个键值对,如果键已存在则新值替换旧值,如果键不存在则

增加一个键值对。

remove方法接受一个参数,表示从映射中移除其映射关系的键。

get方法表示返回指定键所映射的值,get方法的参数表示移除的其映射关系的键,返回值表示与key关联的值。

要想获得Map中所有的键,应该使用方法ketSet,该方法返回值类型为Set集合。

要想获得Map中所有的值,应该使用方法get,该方法返回值类型为指定键所映射的值。

要想获得Map中所有的键值对的集合,应该使用方法entrySet,该方法返回一个

Map.Entry类型所组成的Set。

11.(Map)利用Map,完成下面的功能:

从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。

如果该

年没有举办世界杯,则输出:

没有举办世界杯。

附:

世界杯冠军以及对应的夺冠年份,请参考本章附录。

publicclassBk18{

BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));

Stringyear=null;

try{

year=br.readLine();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

Map<

String,String>

map=newHashMap<

String,String>

map.put("

2002"

"

巴西"

);

2006"

意大利"

2010"

"

南非"

if(map.containsKey(year)){

System.out.println(map.get(year));

else{

System.out.println("

这一年没有承办世界杯!

"

12.(Map)已知某学校的教学课程内容安排如下:

集合框架(习题)"

o:

button="

t"

target="

_blank"

href="

src="

file:

///C:

\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.png"

完成下列要求:

1)使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述

课程安排。

2)增加了一位新老师Allen教JDBC

3)Lucy改为教CoreJava

4)遍历Map,输出所有的老师及老师教授的课程

5)*利用Map,输出所有教JSP的老师。

publicstaticvoidmain(String[]args){

map=newTreeMap<

Tom"

CoreJava"

John"

Oracle"

Susan"

Jerry"

JDBC"

Jim"

Unix"

Kevin"

JSP"

Lucy"

System.out.println(map.size());

Allen"

map.remove("

Set<

String>

set=map.keySet();

for(Objectobj:

set){

System.out.println(map.get((String)obj));

for(Stringstr:

if(map.get(str).equals("

)){

教JSP的老师有:

+str);

13.(泛型)使用泛型,改写第5题

packagelist;

importjava.util.Iterator;

importjava.util.LinkedList;

publicclassTest2{

LinkedList<

Worker1>

ll=newLinkedList<

Worker1w1=newWorker1("

18,3000);

Worker1w2=newWorker1("

li4"

25,3500);

Worker1w3=newWorker1("

22,3200);

ll.add(w1);

ll.add(w2);

ll.add(w3);

ll.add(1,newWorker1("

24,2200));

ll.remove(w3);

//用for循环遍历

for(inti=0;

i<

ll.size();

i++){

System.out.println(ll.get(i));

=================="

//用迭代器遍历

Iteratoriterator=ll.iterator();

while(iterator.hasNext()){

System.out.println(iterator.next());

classWorker1{

privateintage;

privateStringname;

privatedoublesalary;

publicWorker1(){}

publicWorker1(Stringname,intage,doublesalary){

publicintgetAge(){

returnage;

publicvoidsetAge(intage){

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

publicdoublegetSalary(){

returnsalary;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2