关于迭代器有个小问题
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 星