Java中定义一个迭代器(Iterator)遍历完一个集合后,如果还要再遍历一次这个集合?

为p集合定义了一个集合的迭代器,如:Iterator it = p.iterator();
那么这个迭代器能否反复对p集合进行迭代,即迭代完一次后,又从头开始迭代,用来解决集合元素的反复判断、处理;
还是说一个迭代器只能对一个集合迭代一次,如果it.hasNext()返回为false了,该迭代器就不能用了?

可以反复迭代,因为 iterator() 方法每次调用返回的都是一个新的 Iterator。

比如 List 的 iterator() 的实现(在 java.util.AbstractList 中):

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-10-17
实验证明:
创建Iterator对象遍历用一次,就不能再次使用。如果想再一次遍历必须新创建一个Iterator对象
第2个回答  2019-08-18

...迭代完了,如果还想迭代,只能在调用一遍iterator返回一个新的吗...
答: 是的,需要重新调用.iterator()方法,放回1个新的迭代器.原因: 1: 因为迭代器使用完了,里面也就没有元素了,2: 并且java语言没有提供重置的方法.代码如下 import java.util.ArrayList;import java.util.Iterator;public class ListDemo {public static void main(String[] args) {ArrayList<...

Java iterator()和next()原理用法
如果使用 Iterator 来遍历集合中元素,一旦不再使用 List 转而使用 ‍TreeSet 来组织数据,那遍历元素的代码不用做任何修改,如果使用 for 来遍历,那所有遍历此集合的算法都得做相应调整。比如以后你的代码改了,list不在是list接口了,而是set接口(没有get(i)方法),这时你的代码改动就大了...

java iterator循环遍历集合(比如HashSet)的原理
Iterator<String> it = set.iterator() 这时得到一个迭代器,它的指针位于第一个元素之前。然后我们不停地 hasNext() 再 next 得到值,当hasNext 为 false 时当然就不能去 next 了。这背后的位置索引是在迭代器内部记录着的,我们不能直接改它的值,只能 next 去下一个。不过像 ListIterator 则...

iterator用法
hasNext:判断是否存在下一个元素。next:返回迭代器指向的下一个元素,并将指针移到下一个位置。remove:移除迭代器最后返回的元素。这个方法需谨慎使用,因为它会直接改变集合的状态。3. 使用Iterator遍历集合的示例:假设有一个名为“myList”的列表,我们可以使用Iterator来遍历它:java List...

java中.hasNext() 是什么意思?
在Java中,`hasNext()` 是迭代器方法中一个非常关键的成员。它用于检查一个容器中是否还有待遍历的元素。当我们使用迭代器遍历集合(如ArrayList、LinkedList等)时,`hasNext()` 方法的作用是判断是否可以调用 `next()` 方法获取下一个元素。以下是它的具体用法:首先,调用 `iterator()` 方法获取迭代...

Java遍历集合的所有方式
其次,增强for循环,也被称为foreach循环,简化了对集合元素的访问。它利用迭代器内部机制,代码可读性更强,是遍历列表的常见选择。通过jad反编译工具,我们可以看到增强for循环实际上依赖于迭代器的实现。Iterator模式是Java集合中的核心概念,提供了hasNext()和next()方法,用于逐个访问集合元素。List...

java中.hasnext()是什么意思?
在Java的集合框架中,迭代器是一种设计模式,用于遍历集合元素。当我们使用迭代器遍历集合时,有时需要知道是否还有更多的元素可以访问。.hasNext方法就是用来判断这一点的。具体解释如下:1. 基本含义:.hasNext方法返回一个布尔值,如果迭代器的指针后面还有元素,则返回true;如果已经没有更多元素,则返回...

java集合中迭代器iterator的fail-fast机制抛出的是什么异常
java集合中迭代器iterator的fail-fast机制抛出的是什么异常 可以反复迭代,因为 iterator() 方法每次调用返回的都是一个新的 Iterator。 比如 List 的 iterator() 的实现(在 java.util.AbstractList 中):

iterator用法
在Java中,一个对象要表明自己支持迭代的话,就要实现Iterable接口。集合中Collection实现了这个接口,所以其实现可以用Iterator()方法,这个方法是实现了Iterable接口才特有的方法。举个例子,ArrayList实现了Iterable接口,他就可以调用Iterator()方法,得到一个Iterator对象进行迭代。而仅就遍历数据而言,iterator...

java的这三种for循环有什么区别?
第一种是最普通的for循环 这个应该没啥好说的 第二种是第一种for循环的变种也可以说是简写 只能对数组或者是List这样的集合使用 这个是java 1.5新加入的 第三种不是for循环。使用的是迭代器 iterator 像是List这样的集合 一般多是用这种方法 ...

相似回答