集合练习题

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

-心情故事

2021年1月19日发(作者:解如意)
1.
填空

Collection
接口的特点是元素是
___
对象
______


List
接口的特点是元素
__

___
(有
|
无)顺序,
___
不可以
___
(可以
|
不可以) 重复;

Set
接口的特点是元素
__

___
(有
|
无)顺序,
__
可以
____
(可以
|不可以)重复;

Map
接口的特点是元素是
_
键值对
_____
,其中
_

____
可以重复,
____
__
不可以重复。

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){
n(list);
}
}
要求:

1)

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

2)
写出程序执行的结果

Hello Java Learn World
3)
如果要把实现类由
ArrayList
换为
LinkedList
,应该改哪里?
ArrayList


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

List list = new LinkedList();
LinkedList
(更适用于频繁的插入、删除操作)

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

Vector
使

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

List list = new Vector();
Vector
(古老的实现类、线程安全的,但效率要低于
Ar rayList


3.

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

import .*;
public class TestList{
public static void main(String args[]){
List list = new ArrayList();
(“Hello”);

(“World”);

(“Hello”);

li
(“Learn”);

(“Hello”);

(0);
for(int i = 0; i<(); i++){
n((i));
}
}
}
World 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(());
}
}
选择正确答案
A
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
ArrayList L=new ArrayList();
(new

Worker(zhang3,18,3000));
(new

Worker(li4,25,3500));
(new

Worker(wang5,22,3200));

2)


li4
之前插入一个工人,信息为:姓名:
zhao6
,年龄:
24
,工资
3300
(1,new Worker(zhao6,24,330));
3)

删除
wang5
的信息

(3);
4)

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

先在
Worker
类中重写
toString
方法

for(int i=0;i<;i++)
Syso((i));
5)

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

Iterator it=or();
while(t()){

n(());
}
6)


Worker
类添加
equals
方法

public boolean equals(Object obj) {


if (this == obj)



return true;


if (obj == null)



return false;


if (getClass() != ss())





















return false;
Worker other = (Worker) obj;
if (age != )

return false;
if (name == null) {

if ( != null)


return false;
} else if (!())

return false;
return 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
中没有重复元素,则下面说法正

确的是:
C
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;
}
public
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));
// HashSet
是无序的集合,不能在指定位置
添加

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
10.

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

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

______________


remove
方法接受
___
个参数,表示
__________________


get
方法表示
_______________________

get
方法的参数表示
______
,返回值表示
_____


要想获得
Map
中所有的键,应该使用方法
___________
,该方法返回值类型为
_______


要想获得
Map 中所有的值,应该使用方法
___________
,该方法返回值类型为
___ ____


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

_______
类型所组成的
Set


11.

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

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

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

-心情故事


-心情故事


-心情故事


-心情故事


-心情故事


-心情故事


-心情故事


-心情故事