在Java编程中,经常会用到Vector、Enumeration、ArrayList、Collection、Iterator、Set、List等集合类接口。
1. Vector类与Enumeration接口
Vector类是Java语言提供的一种高级数据结构,可用于保存一系列对象,Java不支持数组,Vector类提供了一种与"动态数组"相近的功能。如果我们不能预先确定要保存的对象的数目,或是需要方便获得某个对象的存放位置时,Vector类都是一种不错的选择。
2.Collection接口与Iterator接口
Collection接口的使用类似Vector类,只是方法的名称不同。我们要取出保存在实现Collection接口对象中的所有对象,我们也必须通过Collection.iterator方法返回一个Iterator接口对象,Iterator接口的功能与使用同Enumeration接口非常类似。Java2平台的数据结构类设计人员本可以扩展Enumeration接口,而不用创建Iterator这个新接口。但他们不喜欢Enumeration接口方法冗长的名字,因而创建了Iterator这个新接口,并缩短了方法名长度。
按照Java的语法,不能直接用Collection接口类创建对象,而必须用实现了Collection接口的类来创建对象,ArrayList类就是一个实现了Collection接口的类,我们将上面使用Vector和Enumeration的例子改为用ArrayList和Iteartor编写,就可以了解这些类之间的关系和用法。
ArrayList类中的所有方法是异步的,所以在没有多线程安全问题时,最好用ArrayList,程序的效率会高些。在有线程安全问题,且我们的程序又没有自己处理(自己处理是指对调用ArrayList的代码或方法加上同步处理)时,只能用Vector。
2. 集合类接口的比较
另外还有几个集合类接口Set、List,下面是Collection和它们的比较。
Collection----对象之间没有指定的顺序,允许重复元素。
Set----对象之间没有指定的顺序,不允许重复元素。
List----对象之间有指定的顺序,允许重复元素。