1. 填空
Collection 接口的特点是元素是__无序可重复_______
List 接口的特点是元素___顺序,__可以__重复;
Set 接口的特点是元素_没有_顺序,__不可__重复;
Map 接口的特点是元素是__映射______,其中_value_可以重复,_key_不可以重复。
2. List)有如下代码
import java.util.*;
public class TestList{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“World”);
list.add(1, “Learn”);
list.add(1, “Java”);
printList(list);
}
public static void printList(List list){
//1
for(int i = 0; i< list.size();i++){
   System.out.(i));
  }
 
  for(Object o : list) {
   System.out.println(o);
  }
 
  Iterator itor = list.iterator();
  while(itor.hasNext()){
    System.out.());
  }

}
}
要求:
1) //1 处的代码补充完整,要求输出list 中所有元素的内容
2) 写出程序执行的结果Hello Java Learn World
3) 如果要把实现类由ArrayList 换为LinkedList,应该改哪里?ArrayList
LinkedList 使用上有什么区别?实现上有什么区别?
4) 如果要把实现类由ArrayList 换为Vector,应该改哪里?ArrayList Vector 使
用上有什么区别?实现上有什么区别?
3. List)写出下面程序的运行结果
import java.util.*;
public class TestList{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“World”);
list.add(“Hello”);
list.add(“Learn”);
ve(“Hello”);
ve(0);
for(int i = 0; i<list.size(); i++){
System.out.(i));
}
}
}
Hello Learn
结果:
4. SetList
import java.util.*;
public class TestListSet{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“Learn”);
list.add(“Hello”);
list.add(“Welcome”);
Set set = new HashSet();
set.addAll(list);
System.out.println(set.size());
}
}
选择正确答案  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){
this.name = name;
this.age = age;
this.salary = salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary(){
return salary;
}
public void setSalary(double salary){
this.salary = salary;
}
public void work(){
System.out.println(name + “ work”);
}
}
完成下面的要求
1) 创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
import java.util.ArrayList;
import java.util.List;
public class list {
List<String> l=new ArrayList<String>();
Work w1=new work(zhang3,18,3000);
Work w2=new work(li4,25,3500);
Work  w3=new work(wangwu,22,3200);
L.add(w1);
L.add(w2);
L.add(w3);
2) li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300

3) 删除wang5 的信息
4) 利用for 循环遍历,打印List 中所有工人的信息
5) 利用迭代遍历,对List 中所有的工人调用work 方法。
6) Worker 类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true
6. SetHash 算法)为上一题的Worker 类,在添加完equals 方法的基础上,添加一个
hashCode 方法。
public int hashCode(){
//1
}
有几种写法:
1 return 0;
2
int result = 0;
if (name != null) result = name.hashCode();
return result + age;
3 return super.hashCode();
现在要把Worker 类放入HashSet 中,并希望在HashSet 中没有重复元素,则下面说法正
确的是:B
A. 三种写法都正确
B. 1), 2)写法正确,2)效率更高
C. 2)写法正确,1),3)写法都不正确

7. SetHash 算法,方法覆盖)代码改错
import java.util.*;
class Worker{
String name;
int age;
double salary;
public Worker(){}
public Worker(String name, int age, double salary){
this.name = name;
this.age = age;
this.salary = salary;
}
int hashCode(){
return name.hashCode() + age + salary;
}
public boolean equals(Worker w){
if (w.name == name && w.salary == salary && w.age == age){
return true;
}else return false;
}
}
public class TestWorker{
public static void main(String args[]){
Set set = new HashSet();
set.add(new Worker(“tom”, 18, 2000));
set.add(new Worker(“tom”, 18, 2000));
set.add(0, new Worker(“jerry”, 18, 2000));
System.out.println(set.size());
}
}
8. SetHash 算法)在前面的Worker 类基础上,为Worker 类增加相应的方法,使得Worker
放入HashSet 中时,Set 中没有重复元素。
并编写相应的测试代码。

9. SetComparable 接口)在前面的Worker 类基础上,为Worker 类添加相应的代码,
使得Worker 对象能正确放入TreeSet 中。并编写相应的测试代码。
注:比较时,先比较工人年龄大小,年龄小的排在前面。如果两个工人年龄相同,则再
比较其收入,收入少的排前面。如果年龄和收入都相同,则根据字典顺序比较工人姓名。例
如:有三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 1500
li4 18 1500
wang5 18 1600
zhao6 17 2000
放入TreeSet 排序后结果为:

10. Map)关于下列Map 接口中常见的方法
put 方法表示放入一个键值对,如果键已存在则__覆盖___,如果键不存在则
____添加____
remove 方法接受__1_个参数,表示_______key________
get 方法表示_______获得key对应的_____value___________get 方法的参数表示_key__,返回值表示_value_
要想获得Map 中所有的键,应该使用方法_keySet_______,该方法返回值类型为__Set<key>____
要想获得Map 中所有的值,应该使用方法___values_______,该方法返回值类型为__collention<values>__
要想获得Map 中所有的键值对的集合,应该使用方法__enryset_________,该方法返回一个
__mapentry<k,v>__类型所组成的Set

11. Map)利用Map,完成下面的功能:
从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该
年没有举办世界杯,则输出:没有举办世界杯。
附:世界杯冠军以及对应的夺冠年份,请参考本章附录。
附录
1. 截止到2009 年为止,历届世界杯冠军

2. 2008 北京奥运会男足参赛国家:
科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西
兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利

12. Map)已知某学校的教学课程内容安排如下:
完成下列要求:
1 使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述
课程安排。import java.util.HashMap;
import java.util.Map;
public class zuoye12 {
    Map<String, String> map=new HashMap<String, String>();
    public void test(){
        map.put("Tom", "CoreJava");
        map.put("John", "Oracle");
        map.put("Susan", "Oracle");
        map.put("Jetty", "JDBC");
        map.put("Jim", "Unix");
        map.put("Kevin", "JSP");
        map.put("Lucy", "JSP");
        System.out.println(map);
    }
    public static void main(String[] args) {
        new zuoye12().test();
    }
}
2 增加了一位新老师Allen JDBC
        map.put("Allen", "JDBC");
        System.out.println(map);
3 Lucy 改为教CoreJava  put方法
        map.remove("Lucy");
        map.put(java集合排序怎么实现"Lucy","CoreJava");
        System.out.println(map);

4 遍历Map,输出所有的老师及老师教授的课程(Set<Map.Entry<String,String>>
Set<String> get(key))
        Set<String> s=map.keySet();
        System.out.println(s);
        Iterator<String>ite=s.iterator();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。