java集合-练习题解析

萌到你眼炸
840次浏览
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(());
}
}

-一直幸福


-一直幸福


-一直幸福


-一直幸福


-一直幸福


-一直幸福


-一直幸福


-一直幸福