博学谷——让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异常。对