📅  最后修改于: 2023-12-03 15:32:02.288000             🧑  作者: Mango
在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);
}
迭代器的主要方法包括:
| 方法 | 说明 | | ----- | ------- | | boolean hasNext() | 如果集合中还有下一个元素,则返回true。 | | E next() | 返回集合中的下一个元素。 | | void remove() | 从集合中移除刚刚返回的元素。 |
其中,remove()方法是可选的,不是所有的迭代器都支持它。如果在不支持remove()的情况下调用该方法,会抛出UnsupportedOperationException异常。
迭代器遍历集合的顺序是不能保证的。如List是按照元素的插入顺序排列的,但是迭代器不一定按照这个顺序遍历。
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循环的区别在于:
迭代器是一种遍历集合中元素的接口,它可以按照指定顺序访问集合中的元素,而且不必关心集合底层的存储方式。迭代器主要有三个方法,即hasNext()、next()和remove(),其中remove()是可选的。使用迭代器遍历集合的顺序是不确定的,不能保证按照元素的插入顺序遍历。foreach循环可以简化遍历集合的代码,但是不具有迭代器的全部功能。