java集合-练习题解析

1. 填空

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

List 接口的特点是元素__有__(有|无)顺序,_可以___(可以|不可以)重复; Set 接口的特点是元素__无___(有|无)顺序,____不可以__(可以|不可以)重复; Map 接口的特点是元素是__key、value映射______,其中__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.println(list.get(i)); }

for(Object o : list) { System.out.println(o); }

Iterator itor = list.iterator(); while(itor.hasNext()){

System.out.println(itor.next()); } } }

要求:

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”); list.remove(“Hello”); list.remove(0);

for(int i = 0; i

结果: Hello Learn

4. (Set,List) 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

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 }

有几种写法:

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4