·集合类用于存储一组对象,其中每个对象称为元素。如Vector、Enumeration、ArrayList、Collection、Set、List等集合类和接口。
·Vector类和Enumeration接口
Vector是JAVA提供的一种高级数据结构,可用于保存一系列的对象,由于JAVA不支持动态数组,Vector类提供了一种与动态数组相似的功 能:如果将若干对象保存在一种数据结构中,但不能预先确定要保存对象的数目时,可选择Vector类。
·编程举例:将键盘上输入的一个数字序列中的每位数字存储在Vector对象中,然后在屏幕上打印出每位数字相加的结果,如,输入32,打印出5;输入1234,打印出10;
·Enumeration的nextElement可以逐一取出Vector中的Object类型的对象,使用时需要进行类型转换。Enumeration对象内部有一个指示器,指向nextElement()方法所要返回的对象的位置,在第一次调用nextElement()方法之前,指示器指向第一个对象或者空对象。
Test Code:
·Collection接口与Iterator接口
·Collection是接口,不能直接用Collection创建实例对象,必须用implement了Collection接口的类来创建实例。
·编程举例:用ArrayList和Iterator改写上面的例子程序。
总结:
·Vector中所有方法都是线程同步的,如果有两个线程并发访问Vector对象是安全的。需要额外的开销用于同步监视器的运行,使程序的效率降低。
·ArrayList中的所有方法都是不同步的,若不存在同步的问题,则使用Vector安全性高。若有同步问题,则需要程序员自己对ArrayList中方法进行同步处理。
·Collection接口、Set接口、List接口的区别:
·Collection是Set和List的父类,Collection接口中各个元素对象之间没有指定的顺序,允许有重复元素和多个null元素对象,不能实现排序。
·Set各元素对象之间没有指定的顺序,但是不允许有重复元素,最多允许有一个null元素对象。
·List各个元素对象之间有指定的顺序,允许有重复元素和多个null元素对象,可以进行排序。
· Enumeration接口只有两个方法:boolean
hasMoreElements(),
E
nextElement()
Iterator接口有三个方法:boolean
hasNext(),
E
next(),
void
remove()
另外还有个Iterator接口,和Enumeration是差不多的,不过名称比较短,通常推荐用Iterator。
Iterator会检查collection是否被其他线程改动,若被改动则会fail。