Iterator循环遍历的一点小问题
来源:3-4 案例:在集合中插入字符串
慕先生6309556
2021-08-08 17:58:21
相关代码:
package Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class WordDemo {
public static void main(String[] args) {
//将英文单词添加到HashSet中
Set<String> one=new HashSet<String>();
one.add("blue");
one.add("red");
one.add("black");
one.add("yellow");
one.add("white");
System.out.println("遍历输出集合元素");
//遍历输出
Iterator it=one.iterator();//把set对象one放入迭代器中
while(it.hasNext()) {
String book=(String)(it.next());
System.out.println(book);
}
System.out.println("插入重复元素后的结果");
//插入一个重复单词
one.add("黑色");
//Iterator it=one.iterator();
while(it.hasNext()) {
String book=(String)(it.next());
System.out.println(book);
}
}
} //这段代码的执行不对,Iterator对象it不能循环遍历加入了新单词后的集合
但是我在插入了新单词,one.add("黑色后");重新建立一个Iterator two=one.itetator(),如下面完整代码,运行成功,这是为什么啊
package Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class WordDemo {
public static void main(String[] args) {
//将英文单词添加到HashSet中
Set<String> one=new HashSet<String>();
one.add("blue");
one.add("red");
one.add("black");
one.add("yellow");
one.add("white");
System.out.println("遍历输出集合元素");
//遍历输出
Iterator it=one.iterator();//把set对象one放入迭代器中
while(it.hasNext()) {
String book=(String)(it.next());
System.out.println(book);
}
System.out.println("插入重复元素后的结果");
//插入一个重复单词
one.add("黑色");
Iterator two=one.iterator();
while(two.hasNext()) {
String book=(String)(two.next());
System.out.println(book);
}
}
}
1回答
好帮手慕小班
2021-08-08
同学你好,one.iterator();相当于先把数据从集合取出来,然后放到迭代器中,再在迭代器中进行遍历。
这里调用了add方法,集合中的数据发生了变化,所以要重新调用iterator方法来读取遍历。
祝学习愉快~
相似问题
回答 1
回答 1