为什么每次调用完iterator()后,再次遍历set就为空了?需要重新对it赋值,it = set.iterator()后就又遍历出来了.
来源:3-4 案例:在集合中插入字符串
weixin_慕村4552609
2021-10-11 23:38:17
package com.imooc.set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetDemo1 {
public void showSet(Iterator it) {
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
System.out.println();
System.out.println("*******************");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Set set = new HashSet();
set.add("white");
set.add("blue");
set.add("red");
set.add("black");
set.add("yellow");
Iterator it = set.iterator();
SetDemo1 sd = new SetDemo1();
sd.showSet(it);
//sd.showSet(it);需要重新赋值
set.add("green");
it = set.iterator();
sd.showSet(it);
set.add("white");
it = set.iterator();
sd.showSet(it);
}
}
1回答
好帮手慕小蓝
2021-10-12
同学你好,每一个Iterator只能使用一次,使用之后需要重新使用iterator()方法生成新的Iterator对象。
原因是Iterator的底层指针每次调用hasNext之后都会下移,一旦下移就无法自动回位。所以每次使用Iterator之后指针都在末尾,导致下一次遍历的时候hasNext返回结果为false,无法再次使用。
祝学习愉快~
相似问题
回答 1
回答 1