📜  Java迭代器和枚举的区别和例子(1)

📅  最后修改于: 2023-12-03 15:32:06.005000             🧑  作者: Mango

Java迭代器和枚举的区别和例子

在Java编程中,我们常常需要对一些集合类进行遍历操作。Java提供了两种方式来进行遍历操作:迭代器(Iterator)和枚举(Enumeration)。本文将介绍它们之间的区别和使用方法。

迭代器

迭代器是Java集合框架中的一种设计模式,它提供了一种顺序访问集合中各个元素的方法,同时不暴露其内部实现。在使用迭代器遍历集合时,元素的顺序是不确定的,取决于具体实现。

在Java中,用Iterator接口表示迭代器。一些常见的方法如下:

  • hasNext():如果仍有元素可以迭代,则返回true。
  • next():返回下一个元素。
  • remove():从迭代器指向的集合中移除迭代器返回的最后一个元素。

迭代器在遍历的过程中允许删除集合中的元素。

下面是一个使用迭代器遍历List集合的例子:

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    System.out.println(item);
}
枚举

枚举是Java早期版本中遍历集合的一种方式。Enumeration接口是用来遍历一些集合类(如Vector和Hashtable)中的元素的。在使用枚举遍历集合时,元素的顺序是确定的,与集合中元素的添加顺序保持一致。

枚举在遍历的过程中不允许删除集合中的元素。

下面是一个使用枚举遍历Vector集合的例子:

Vector<String> vector = new Vector<>();
vector.add("Java");
vector.add("Python");
vector.add("C++");

Enumeration<String> enumeration = vector.elements();
while (enumeration.hasMoreElements()) {
    String item = enumeration.nextElement();
    System.out.println(item);
}
区别
  1. 迭代器可以遍历所有的Collection集合,而枚举只能用于遍历Vector和Hashtable等古老的集合类型;
  2. 迭代器在遍历时允许删除集合中的元素,而枚举不允许修改集合中的元素;
  3. 迭代器在遍历时元素的顺序是不确定的,而枚举遍历的顺序总是与集合中元素的添加顺序保持一致。
总结

迭代器是Java集合框架中一种通用的遍历方式,在所有Collection集合中都可以使用。它相比于枚举提供了更多的操作和更好的可读性。因此,在开发中我们通常会使用迭代器,而不是枚举。