迭代器或枚举,我应该使用什么?

时间:2016-07-27 04:37:37

标签: java vector

我是java的新手, 我想遍历Vector中的元素。当我使用 Iterator / Enumeration 接口时,我得到了相同的结果。

由于Vector已同步,因此速度很慢。如果我使用 Iterator / Enumeration ,它是否会提升任何方面的效果。

这是我尝试过的事情

import java.util.*;

class vectorClass{
public static void main(String args[]){

    Vector<String> vector = new Vector<String>();
    vector.add("This is a vector Example\n");
    vector.add("This is a next line!");

    Enumeration en = vector.elements();
    while(en.hasMoreElements()){
        System.out.print(en.nextElement());
    }

    System.out.println();
    Iterator en1 = vector.iterator();
    while(en1.hasNext()){
        System.out.print(en1.next());
    }
}
}

O / P:

  

这是一个矢量示例

     

这是下一行!

     

这是一个矢量示例

     

这是下一行!

1 个答案:

答案 0 :(得分:1)

EnumerationIterator之间没有性能差异。但是,我会促使使用Iterator,因为Enumeration现已弃用(来自文档):

  

注意:此接口的功能由   迭代器接口。此外,Iterator添加了一个可选的删除   操作,并具有较短的方法名称。新的实现应该   考虑使用Iterator优先于Enumeration。

顺便说一句,如果您不被迫使用Vector,请使用ArrayList,因为Vector由于持续同步而速度较慢但仍然不是线程安全的。有关详细信息,请参阅this answer

从javadoc中,还建议使用ArrayList代替Vector

  

与新的集合实现不同,Vector是同步的。如果   不需要线程安全的实现,建议使用   ArrayList代替Vector。