木器时代
2015-11-04 13:47
代码:
while(it.hasNext()){
Course cr = (Course) it.next();
System.out.println("课程"+cr.id+":"+cr.name);
我不明白iterator迭代器是怎么工作的
是不是像个容器把List逐个取出,让List里面的元素被拿出来了
拿完后,用(it.hasNext())判断里面没有元素了,再跳出循环
那么既然里面都没有元素了,那后面的for each怎么还是可以遍历List
的元素?
你没去了解集合中的数据结构,拿ArrayList为例 这个集合的底层结构是一个可变长度的数组,是一个有序的集合,使用迭代器迭代的时候 会找到第一个元素然后进行操作,并不会将这个元素从集合中删除,然后再来判断这个元素的后面是否还有元素,如果有,继续迭代,所以你迭代完成后,集合中的元素仍然在集合中
实际上一般的迭代器在迭代的时候并不能增删集合中的元素(即使你想加入代码来达到这个效果也是不行的),这样会发生并发性访问异常.
会判断
hasNext是判断当前元素下面是否还有元素吗?
大概明白了,谢谢大神( ̄▽ ̄)"
Java入门第三季
409792 学习 · 4340 问题
相似问题