关于迭代器有个小问题
public class CatTest2 {
public static void main(String[] args) {
Cat huahua = new Cat("花花", 12, "英国短毛猫");
Cat fanfan = new Cat("凡凡", 3, "中华田园猫");
Cat huahua02 = new Cat("花花二代", 5, "英国短毛猫");
Set<Cat> set = new HashSet<Cat>();
set.add(huahua);
set.add(fanfan);
set.add(huahua02);
Iterator<Cat> it =set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//我是一条分割线
it=set.iterator();//此处若不加此语句 那么下面的while(it.hasNext()){}语句就不会运行
System.out.println("****************");
while(it.hasNext()){
Cat c=it.next();
if(c.getMonth()<5){
set.remove(c);
}
}
//每次删除后 都要记得重新把it再进行一次迭代
it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}如代码里的it=set.iterator();此处若不加此语句 那么下面的while(it.hasNext()){}语句就不会运行
迭代器每次运行都要重新遍历一次吗
因为我在debug中发现,如果不加it=set.iterator();语句,下面第一个while循环就会被跳过。
如果是,原理是什么呢?
0
收起
正在回答
1回答
set.iterator()是获取迭代器的,hasNext()就是通过循环迭代判断是否存在下一个元素。
Android零基础入门2018版
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星