《Java基础入门》课后习题及答案 下载本文

博学谷——让IT教学更简单,让IT学习更有效

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

import java.util.*; public class Test01 {

public static void main(String[] args) { TreeSet ts = new TreeSet(); ts.add(\ ts.add(\ ts.add(\ ts.add(\ }

Iterator it = ts.iterator(); while(it.hasNext()) {

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

}

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

import java.util.ArrayList; public class Test02 { }

public static void main(String[] args) { }

ArrayList list = new ArrayList(); list.add(\ list.add(\ list.add(\ }

for (String obj : list) {

System.out.println(obj);

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

import java.util.*; public class Test03 {

public static void main(String[] args) {

ArrayList list = new ArrayList(); list.add(\list.add(\list.add(\

ListIterator it = list.listIterator();

博学谷——让IT教学更简单,让IT学习更有效

}

}

while(it.hasPrevious()) { }

Object obj = it.previous(); System.out.print(obj+\

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

import java.util.*; import java.util.Map.*; public class Test04 { }

public static void main(String[] args) { }

Map map = new HashMap(); map.put(1, \map.put(2, \map.put(3,\

Set keySet = map.keySet(); Iterator it = keySet.iterator(); while (it.hasNext()) { }

Object key = it.next(); System.out.println(key); map.remove(key);

五、简答题

1、什么是集合,请列举集合中常用的类和接口?

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

于java.util包中,统称为集合。集合框架中包含3个接口,分别是List、Set、Map。 2、集合中的List、Set、Map有什么区别?

List的特点是元素有序、元素可重复。List接口的主要实现类有ArrayList和LinkedList。Set的特点是元素无序、元素不可重复。Set接口的主要实现类有HashSet和TreeSet。Map的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接口的主要实现类有HashMap和TreeMap。

3、请说说Collection和Collections的有什么区别?

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

请按照题目的要求编写程序并给出运行结果。

博学谷——让IT教学更简单,让IT学习更有效

1、 使用ArrayList集合,对其添加10个不同的元素,并使用Iterator遍历该集合。

提示:

1)使用add()方法将元素添加到ArrayList集合中。

2)调用集合的iterator()方法获得Iterator对象,并调用Iterator的hasNext()和next()方法,迭代出

集合中的所有元素。

2、 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。 提示:

1)Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name

属性进行比较,如果name相同,hashCode()方法的返回值相同,equals方法返回true。 3、选择合适的Map集合保存5位学员的学号和姓名,然后按学号的自然顺序的倒序将这些键值对一一打印出来。 提示:

1)创建TreeMap集合。

2)使用put()方法将学号(“1”、“2”、“3”、“4”、“5”)和姓名(“Lucy”、“John”、“Smith”、“Aimee”、“Amanda”)存储到Map中,存的时候可以打乱顺序观察排序后的效果。 3)使用 map.keySet()获取键的Set集合。

4)使用Set集合的iterator()方法获得Iterator对象用于迭代键。 5)使用Map集合的get()方法获取键所对应的值。

第8章 IO(输入输出)

一、填空题

1、Java中的IO流,按照传输数据不同,可分为__字节流__和__字符流__。

博学谷——让IT教学更简单,让IT学习更有效

2、在Java中,__File__类用于操作磁盘中文件和目录,位于__java.io__包中。 3、在Java中,_SequenceInputStream

__类用来把两个或更多的InputStream输入流对象合并为单个InputStream输入流对象 使用。

4、Java中提供了一个类__RandomAccessFile

__,它不但具有读写文件的功能,并且可以随机地从文件的任何位置开始执行读写数据的操作。 1、 5、在Java中,能实现线程间通信的流是__管道流 __。

6、Java中提供了一个可以在读文件的同时记录行号的类,这个类是__LineNumberReader__,它是__BufferedReader__的直接子类,它通过__setLineNumber(int)__和 __getLineNumber()__方法设置和获取当前行号。

7、InputStreamReader类是用于将__字节流__转换为__字符流__。

8、System.out是__PrintStream__类的对象,称为标准输出流,调用System类的__setOut(PrintStream out)__方法可以实现标准输出流的重定向。

2、 9、Java中一个字符占用两个字节,所有字符采用的都是__Unicode __码表。

10、BufferedWriter的__newLine()__方法可以写入一个换行符。 二、判断题

1、如果一个File表示目录下有文件或者子目录,调用delete()方法也可以将其删除。错 2、装饰设计模式中,装饰对象应该包含一个被装饰对象的引用。对

3、使用ObjectInputStream与ObjectOutputStream类来读取或存储的对象必须要实现Serializable接口,否则程序将出现NotSerializableException异常。对