Java 集合练习题

。。。整理总结吧,应付考试。。。

  1. 填空
    Collection 接口的特点是元素是有些可以重复 有些不可以
    List 接口的特点是元素__有__(有|无)顺序,不可以__(可以|不可以)重复;
    Set 接口的特点是元素__无___(有|无)顺序,可以__(可以|不可以)重复;
    Map 接口的特点是元素是_键值对______,其中_值___可以重复,_键___不可以重复。

  2. (List)有如下代码
    import java.util.*;
    public class Test {
    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) {
    // 1System.out.println(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(古老的实现类、线程安全的,但效率要低于 ArrayList)
  1. (List)写出下面程序的运行结果
    import java.util.*;
    public class Test {
    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 < list.size(); i++) {
    System.out.println(list.get(i));
    }
    }
    }
    结果?
    World Learn

  2. (Set,List)
    import java.util.*;
    public class Test {
    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());
    }
    }
    选择正确答案 A
    A. 编译不通过
    B. 编译通过,运行时异常
    C. 编译运行都正常,输出3
    D. 编译运行都正常,输出4

  3. (List)已知有一个Worker 类如下:
    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
    ArrayList L=new ArrayList();
    L.add(new Worker(zhang3,18,3000));
    L.add(new Worker(li4,25,3500));
    L.add(new Worker(wang5,22,3200));

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

  3. 删除wang5 的信息
    L.remove(3);

  4. 利用for 循环遍历,打印List 中所有工人的信息
    先在 Worker 类中重写 toString 方法
    for(int i=0;i<L.size;i++) Syso(L.get(i));

  5. 利用迭代遍历,对List 中所有的工人调用work 方法。
    Iterator it=L.iterator(); while(it.hasNext()){
    System.out.println(it.next());
    }

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

  1. (Set,Hash 算法)为上一题的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 中没有重复元素,则下面说法正
    确的是:
    A. 三种写法都正确
    B. 1), 2)写法正确,2)效率更高
    C. 2)写法正确,1),3)写法都不正确

7.(Map)关于下列Map 接口中常见的方法
put 方法表示放入一个键值对,如果键已存在则覆盖,如果键不存在则_添加。remove 方法接受_1__个参数。
get 方法表示获得key对应的value,get 方法的参数表示_ key___,返回值表示_ value_。
要想获得Map 中所有的键,应该使用方法___ keySet_。
要想获得Map 中所有的值,应该使用方法_ values。
要想获得Map 中所有的键值对的集合,应该使用方法___ eyset________。

发布了43 篇原创文章 · 获赞 61 · 访问量 5101

猜你喜欢

转载自blog.csdn.net/qq_44735533/article/details/103768946