目录

  • Java开发入门
    • ● Java 概述
    • ● JDK的使用
    • ● 系统环境变量
    • ● 第一个Java程序
    • ● Java的运行机制
    • ● 教学设计
    • ● 课程讲义
    • ● 案例学习
    • ● 课后题答案
  • Java 编程基础
    • ● Java的基本语法
      • ● Java代码基本格式
      • ● Java中的注释
      • ● Java中的关键字
      • ● Java中的标识符
    • ● Java中的变量与常量
      • ● 变量的定义
      • ● 变量的数据类型
        • ● 案例导学
      • ● 变量的类型转换
        • ● 案例导学-自动类型转换
        • ● 案例导学-强制类型转换
      • ● 变量的作用域
        • ● 案例导学-作用域
      • ● Java中的常量
    • ● Java中的运算符
      • ● 案例导学-算术运算符
      • ● 案例导学-赋值运算符
      • ● 案例导学-比较运算符
      • ● 案例导学-逻辑运算符
      • ● 案例导学-位运算符
      • ● 案例导学-运算符的优先级
    • ● 选择结构语句
      • ● 案例导学-if条件语句
      • ● 案例导学-switch条件语句
    • ● 循环结构语句
      • ● 案例导学-while循环语句
      • ● 案例导学-for循环语句
      • ● 案例导学-循环嵌套
      • ● 案例导学-break语句
      • ● 案例导学-continue语句
    • ● 数组
      • ● 案例导学-一维数组的定义
      • ● 案例导学-数组最值
      • ● 案例导学-数组排序
    • ● 教学设计
    • ● 课程讲义
    • ● 课后题答案
  • 面向对象(上)
    • ● 面向对象概述
    • ● Java中的类与对象
      • ● 案例导学-类与对象
    • ● 类的封装
    • ● 案例导学-类的封装
    • ● 方法的重载和递归
    • ● 构造方法
      • ● 案例导学-构造方法与重载
    • ● this关键字
      • ● 案例导学-this
    • ● static关键字
      • ● 案例导学-静态变量
      • ● 案例导学-静态方法
      • ● 案例导学-静态代码块
    • ● 教学设计
    • ● 课程讲义
    • ● 章节测试
    • ● 课后题答案
  • 面向对象(下)
    • ● 类的继承
      • ● 案例导学-类的继承
      • ● 案例导学-方法的重写
      • ● 案例导学-super访问父类成员变量
      • ● 案例导学-super访问父类成员方法
      • ● 案例导学-super访问父类构造方法
    • ● final关键字
    • ● 抽象类和接口
    • ● 多态
    • ● 内部类
    • ● JDK8的Lambda表达式
    • ● 异常
    • ● 垃圾回收
    • ● 教学设计
    • ● 课程讲义
    • ● 章节测试
    • ● 课后习题答案
  • Java中的常用类
    • ● String类和StringBuffer类
    • ● System类与Runtime类
    • ● Math类与Random类
    • ● 包装类
    • ● 日期与时间类
    • ● 格式化类
    • ● 课后题答案
    • ● 课程讲义
  • 集合
    • ● 集和概述
    • ● Collection接口
    • ● List接口
      • ● List接口简介
      • ● ArrayList集合
      • ● LinkList集合
    • ● Collection集合遍历
    • ● Set接口
    • ● Map接口
    • ● 泛型
    • ● 常用工具类
      • ● Collections工具类
      • ● Arrays工具类
    • ● 课后题参考答案
    • ● 课程讲义
  • IO流
    • ● I/O流概述
    • ● 字节流
    • ● 字符流
    • ● File类
    • ● RandomAccessFile
    • ● 对象序列化
    • ● NIO
    • ● NIO.2
    • ● 课后题答案
    • ● 课程讲义
    • ● 章节测试
  • GUI(图形用户接口)
    • ● Swing概述
    • ● Swing顶级容器
    • ● 布局管理器
    • ● 事件处理
    • ● Swing常用组件
    • ● Swing组件的整合使用
    • ● JavaFX图形用户界面工具
    • ● 课程讲义
  • JDBC
    • ● 什么是JDBC
    • ● JDBC常用API
    • ● JDBC编程
    • ● 案例-使用JDBC实现QQ登录
    • ● 课程讲义
  • 多线程
    • ● 线程概述
    • ● 线程的创建
    • ● 线程的生命周期及状态转换
    • ● 线程的调度
    • ● 多线程同步
    • ● 多线程通信
    • ● 教学设计
    • ● 课后题参考答案
    • ● 课程讲义
  • 网络编程
    • ● 网络通信协议
    • ● UDP通信
    • ● TCP通信
    • ● 课程讲义
  • Eclipse开发工具
    • ● Eclipse概述
    • ● Eclipse的安装与启动
    • ● Eclipse进行程序开发
    • ● Eclipse程序调试
    • ● 使用Eclipse导出、导入jar文件
  • ACM大赛题库
    • ● 2027
    • ● 2028
    • ● 2024-2026
    • ● 2012-2023
    • ● 2018-2020
    • ● 2015-2017
    • ● 2012-2014
    • ● 2009-2011
    • ● 2003-2005
    • ● 2000-2002
  • PBL学生风采展示
    • ● 实验一
    • ● 实验二
    • ● 实验三
    • ● 实验四
课后题参考答案

一、填空题

       1、集合

       2Comparator

       3、有序、可重复,无序、不可重复

       4hashNext()next()

       5CollectionMap

       6、键、值

       7ListIterator

       8ArrayListLinkedListHashSetTreeSetHashMapTreeMap

       9put()get()

       10CollectionsArrays

二、判断题

1、错  2、对   3、对  4、错   5、对

三、选择题

1BC  2A   3D   4ABD   5C   6AB  7D   8AB   9ABC   10B

四、程序分析题

1、程序可以编译通过,输出结果是“abc”,因为TreeSet集合不允许存放重复元素,第2次增加的元素c会覆盖之前存入的元素c,所以输出结果是“abc”,而不是“abcc”。

2、程序不可以编译通过,这是由于向ArrayList集合中存入元素时,集合并不能记住元素的类型,因此在取出元素时,只能使用Object类型,而不能使用String类型。

3、程序可以编译通过,但是什么也没有打印。使用ListIterator进行从后向前的遍历集合,可以使用以下两种方法,一是使用listIterator(intindex)方法将索引index的值设置为集合元素的数目,也就是ListIterator it =list.listIterator(3);,二是将程序先从前向后遍历,然后再从后向前遍历。

4、程序编译不通过,由于Map集合在遍历的过程中不能使用集合对象本身删除元素,这会导致并发修改异常,若想删除集合中的元素,可以使用Iteratorremove()方法。

五、简答题

1、为了使程序能方便的存储和操作数目不固定的一组数据,JDK提供了一套类库,这些类都位

java.util包中,统称为集合。集合框架中包含3个接口,分别是ListSetMap

2List的特点是元素有序、元素可重复。List接口的主要实现类有ArrayListLinkedListSet的特点是元素无序、元素不可重复。Set接口的主要实现类有HashSetTreeSetMap的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接口的主要实现类有HashMapTreeMap

3Collection是一个单例集合接口。它提供了对集合对象进行基本操作的通用方法。Collections是一个工具类。它包含各种有关集合操作的方法。

4Hashtable继承自Dictionary类,而HashMapJava1.2引进的Map接口的一个实现。HashMap允许将null作为一个entrykey或者value,而Hashtable不允许。还有就是,HashMapHashtablecontains方法去掉了,改成containsvaluecontainsKey。最大的不同是,Hashtable的方法是线程安全的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。

5、(1)提高了Java程序的类型安全,在编译时期解决,避免程序在运行时期发生错误。

  (2)消除强制类型转换。

  (3)泛型可以替代Object类型的参数和变量的使用,带来性能的大幅提高并增加代码的可读性。

 

六、编程题

1、参考答案

import java.util.*;

public class Test01 {

    publicstatic void main(String[] args) {

        ArrayListlist = new ArrayList();

        for(inti = 0; i < 10; i++) {        

            list.add("A"+i);

        }

        Iteratorit = list.iterator();       

        while(it.hasNext()){                  

            Objectobj = it.next();         

            System.out.println(obj);           

        }  

    }

}

2、参考答案

import java.util.*;

public class Test02 {

    publicstatic void main(String[] args) {

        HashSethashSet = new HashSet();

        Personp1 = new Person("Jack",25);

        Personp2 = new Person("Rose",23);

        Personp3 = new Person("Jack",27);

        hashSet.add(p1);

        hashSet.add(p2);

        hashSet.add(p3);

        for(Objectobj:hashSet){

            Personp=(Person)obj;

            System.out.println(p.name+":"+p.age);

        }

    }

}

class Person{

    Stringname;

    int age;

    publicPerson(String name, int age) {

        super();

        this.name= name;

        this.age= age;

    }

    public inthashCode() {

       return name.hashCode();

    }

    publicboolean equals(Object obj) {

        if(this == obj)

            returntrue;

        if(obj == null)

            returnfalse;

        Personother = (Person) obj;

        returnother.name.equals(this.name);

    }

}  

3、参考答案

import java.util.*;

public class Test03 {

    public staticvoid main(String[] args) {

        TreeMapmap = new TreeMap(new MyComparator());

        map.put("1","Lucy");

        map.put("2","Lucy");

        map.put("3","John");

        map.put("4","Smith");

        map.put("5","Amanda");

        for(Object key : map.keySet()) {

            System.out.println(key+ ":" + map.get(key));

        }

    }

}

class MyComparator implements Comparator {

    public intcompare(Object obj1, Object obj2) {

        Stringele1 = (String) obj1;

        Stringele2 = (String) obj2;

        returnele2.compareTo(ele1);

    }

}