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方法来读取遍历。

祝学习愉快~

0

0 学习 · 16556 问题

查看课程