java集合-练习题解析

玛丽莲梦兔
892次浏览
2021年01月19日 11:55
最佳经验
本文由作者推荐

-一直幸福

2021年1月19日发(作者:缪瑞英)

1.
填空

Collection
接口的特点是元素是
___
无序可重复
______
;

List
接口的特点是元素
__
有
__
(有
|< br>无)顺序,
_
可以
___
(可以
|
不可以)重复;< br>
Set
接口的特点是元素
__
无
___
(有|
无)顺序,
____
不可以
__
(可以
|
不 可以)重复;

Map
接口的特点是元素是
__key
、
value
映射
______
,其中
__value__
可以重复,
_key___
不
可以重复。


2.
(
List
)有如下代码

import .*;
public class TestList{
public static void main(String args[]){
List list = new ArrayList();
(
“
Hello
”
);
(
“
World
”
);
(1,
“
Learn
”
);
(1,
“
Java
”
);
printList(list);
}
public static void printList(List list){
//1
for(int i = 0; i< ();i++){

n((i));

}



for(Object o : list) {

n(o);

}



Iterator itor = or();

while(t()){

n(());

}

}
}
要求:

1)
把
//1
处的代码补充完整,要求输出
list
中所有元素的内容

2)
写出程序执行的结果
Hello Java Learn World
3)
如果要把实现类由
ArrayList
换为
LinkedList
,应该改哪里?
ArrayList
和

LinkedList
使用上有什么区别?实现上有什么区别?

4)
如果要把实现类由
ArrayList
换为
Vector
,应该改哪里?
ArrayList
和
Vector
使

用上有什么区别?实现上有什么区别?


3.
(
List
)写出下面程序的运行结果


import .*;
public class TestList{
public static void main(String args[]){
List list = new ArrayList();
(
“
Hello
”
);
(
“
World
”
);
(
“
Hello
”
);
(
“
Learn
”
);
(
“
Hello
”
);
(0);
for(int i = 0; i<(); i++){
n((i));
}
}
}
结果
: Hello Learn

4.
(
Set
,
List
)

import .*;
public class TestListSet{
public static void main(String args[]){
List list = new ArrayList();
(
“
Hello
”
);
(
“
Learn
”
);
(
“
Hello
”
);
(
“
Welcome
”
);
Set set = new HashSet();
(list);
n(());
}
}
选择正确答案
C
A
.

编译不通过

B
.

编译通过,运行时异常

C
.

编译运行都正常,输出
3
D
.

编译运行都正常,输出
4

5.
(
List
)已知有一个
Worker
类如下:

public class Worker {
private int age;
private String name;
private double salary;
public Worker (){}
public Worker (String name, int age, double salary){

= name;
= age;
= salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
= age;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public double getSalary(){
return salary;
}
public void setSalary(double salary){
= salary;
}
public void work(){
n(name +
“
work
”
);
}
}
完成下面的要求

1)
创建一个
List
,在
List
中增加三个工人,基本信息如下:

姓名

年龄

工资

zhang3 18 3000
li4 25 3500
wang5 22 3200
2)
在
li4
之前插入一个工人 ,信息为:姓名:
zhao6
,年龄:
24
,工资
3300
3)
删除
wang5
的信息

4)
利用
for
循环遍历,打印
List
中所有工人的信息

5)
利用迭代遍历,对
List
中所有的工人调用
work
方法。

6)
为
Worker
类重写
equals
方法,当姓名、年龄、工资全部相等时候才返回
true

6.
(
Set
,
Hash
算法)为上一题的
Worker
类,在添加完
equals
方法的基础上,添加一个

hashCode
方法。

public int hashCode(){
//1
}
有几种写法:


1
)
return 0;
2
)

int result = 0;
if (name != null) result = de();
return result + age;
3
)
return de();
现在要把
Worker
类放入
HashSet
中,并希望在
HashSet
中没有重复元素,则下面说法正

确的是:

A.
三种写法都正确

B. 1), 2)
写法正确,
2)
效率更高

C. 2)
写法正确,
1),3)
写法都不正确



7.
(
Set
,
Hash
算法,方法覆盖)代码改错

import .*;
class Worker{
String name;
int age;
double salary;
public Worker(){}
public Worker(String name, int age, double salary){
= name;
= age;
= salary;
}
int hashCode(){
return de() + age + salary;

}
public boolean equals(Worker w){
if ( == name && == salary && == age){
return true;
}else return false;
}
}
public class TestWorker{
public static void main(String args[]){
Set set = new HashSet();
(new Worker(
“
tom
”
, 18, 2000));
(new Worker(
“
tom
”
, 18, 2000));
(0, new Worker(
“
jerry
”
, 18, 2000));
n(());
}
}
8.
(
Set
,
Hash
算法)在前面的
Worker
类基础上,为
Worker
类增加相应的方法,使得

Worker
放入
HashSet
中时,
Set
中没有重复元素。

并编写相应的测试代码。


9.
(
Set
,
Comparable
接口)在前面的
Worker
类基础上,为
Worker
类添加相应的代码,

使得
Worker
对象能正确放入
TreeSet
中。并编写相应的测试代码。

注:比较时,先比较工人年龄大小,年龄小的排在前面。如果两个工人年龄相同,则再

比较其收入,收入少的排前面。
如果年龄和收入都相同,
则根据字典顺序比较工人姓名。例

如:有三个工人,基本信息如下:

姓名

年龄

工资

zhang3 18 1500
li4 18 1500
wang5 18 1600
zhao6 17 2000
放入
TreeSet
排序后结果为:

zhao6 li4 zhang3 wang5

//Worker

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

put
方法表示放入一个键值对,如果键已存在则
__
覆盖
___
,如果键不存在则

____
添加
_____
。

remove
方法接受
__1_
个参数,表示
______key ____________
。

get
方法表示
_______< br>获得
key
对应的
value________________
,< br>get
方法的参数表示
__key___
,返回值表示
__valu e__
。

要想获得
Map
中所有的键,应该使用方法
_ _keySet_________
,该方法返回值类型为
____Set__。

要想获得
Map
中所有的值,应该使用方法
__valu es_________
,该方法返回值类型为
_Collection___ ___
。

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

______
类型所组成的
Set
。


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

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

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

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

附录

1.
截止到
2009
年为止,历届世界杯冠军



2. 2008
北京奥运会男足参赛国家:

科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西

兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利



Map map=HashMap();


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



完成下列要求:

1
)

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

课程安排。

2
)

增加了一位新老师
Allen
教
JDBC
3
)
Lucy
改为教
CoreJava put
方法

4
)

遍历
Map
,输出所 有的老师及老师教授的课程
(Set<>
、
Set< String> get(key))
5
)
*
利用
Map
,输出所有教
JSP
的老师。


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


14.
(泛型)使用泛型和

接口,改写第
12
题的前
4
问


15. *
(
List
)写出下面程序的输出结果

import .*;
class MyClass{
int value;
public MyClass(){}
public MyClass(int value){ = value; }
public String toString(){
return
“”
+value;
}
}
public class TestList{
public static void main(String args[]){
MyClass mc1 = new MyClass(10);
MyClass mc2 = new MyClass(20);
MyClass mc3 = new MyClass(30);
List list = new ArrayList();
(mc1);
(mc2);

(mc3);
MyClass mc4 = (MyClass) (1);
= 50;
for(int i = 0; i<(); i++){
n((i));
}
}
}

10 50 30
16. *
(
Set
,
HashSet
,空指针)有下面代码

import .*;
class Student {
int age;
String name;
public Student(){}
public Student(String name, int age){
= name;
= age;
}
public int hashCode(){
return de() + age;
}
public boolean equals(Object o){
if (o == null) return false;
if (o == this) return true;
if (ss() != ss()) return false;
Student stu = (Student) o;
if ((name) && == age) return true;
else return false;
}
}
public class TestHashSet{
public static void main(String args[]){
Set set = new HashSet();
Student stu1 = new Student();
Student stu2 = new Student(
“
Tom
”
, 18);
Student stu3 = new Student(
“
Tom
”
, 18);
(stu1);
(stu2);
(stu3);
n(());
}
}

-一直幸福


-一直幸福


-一直幸福


-一直幸福


-一直幸福


-一直幸福


-一直幸福


-一直幸福