📜  Java中的迭代器(1)

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

Java中的迭代器

在Java中,迭代器(Iterator)是一种能够顺序访问集合(Collection)中的元素的接口,它可以遍历各种类型的集合,如List、Set和Map等。

通过迭代器,我们可以在不知道集合具体实现方式的情况下,按指定顺序遍历集合中的所有元素,而且不必关心集合底层的存储方式。

使用迭代器

下面的例子展示了如何使用迭代器遍历一个List:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println(element);
}
  1. 先创建List对象,并向其中添加一些元素。
  2. 调用List的iterator()方法,得到一个Iterator对象。
  3. 使用while循环遍历Iterator中的每一个元素。循环体中调用Iterator的hasNext()方法判断是否还有下一个元素,如果有,再调用next()方法取出下一个元素。
迭代器的主要方法

迭代器的主要方法包括:

| 方法 | 说明 | | ----- | ------- | | boolean hasNext() | 如果集合中还有下一个元素,则返回true。 | | E next() | 返回集合中的下一个元素。 | | void remove() | 从集合中移除刚刚返回的元素。 |

其中,remove()方法是可选的,不是所有的迭代器都支持它。如果在不支持remove()的情况下调用该方法,会抛出UnsupportedOperationException异常。

迭代器的遍历顺序

迭代器遍历集合的顺序是不能保证的。如List是按照元素的插入顺序排列的,但是迭代器不一定按照这个顺序遍历。

foreach循环与迭代器的区别

Java 5中引入了foreach循环,可以简化遍历集合的代码,下面是使用foreach循环遍历集合的代码:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
for (String element : list) {
    System.out.println(element);
}

foreach循环实际上使用的是迭代器,但是这个过程被编译器自动完成,所以可以避免使用while循环和手动调用迭代器的方法。

迭代器和foreach循环的区别在于:

  • 迭代器可以移除集合中的元素,而foreach循环不能。
  • 迭代器可以遍历任何实现了Iterable接口的类,而foreach循环只能遍历实现了Iterable接口的类。
总结

迭代器是一种遍历集合中元素的接口,它可以按照指定顺序访问集合中的元素,而且不必关心集合底层的存储方式。迭代器主要有三个方法,即hasNext()、next()和remove(),其中remove()是可选的。使用迭代器遍历集合的顺序是不确定的,不能保证按照元素的插入顺序遍历。foreach循环可以简化遍历集合的代码,但是不具有迭代器的全部功能。