Iterator迭代器及增强FOR(for-each)

来源:互联网 发布:远视 眼镜 知乎 编辑:程序博客网 时间:2024/05/18 20:37
Iterator迭代器用于获取集合中的元素。一般是用于遍历集合,但是需要配合next()跟hasNext()使用。
next()返回迭代的下一个元素。其实就是获取迭代器的元素,并且移动到下一个元素的位置。(注:虽然java中已经在避免出现指针,但是形似的东西还是有的)hasNext()判断迭代器中是否有元素可以被迭代。
注意:

迭代器是依赖于集合而存在,并且,一般来说,集合中要有元素才有意义。另外在通过迭代器迭代的过程中,往集合中添加元素,这样将导致ConcurrentModificationException(并发修改异常)

解决方案:
A:用集合本身的属性作为条件for遍历集合,再修改集合。这样能添加成功,且元素添加到末尾。
B:用列表迭代器(ListIterator)迭代,用列表迭代器修改元素。遍历到哪里修改在哪里。

ListIterator特有2个方法:previous()和hasPrevious()。

可以逆向遍历,但是注意:必须先正向遍历,然后才能逆向遍历。

原理:指针移动到最后再从最后移动回到开头。

JDK5的新特性:增强for循环(for-each)

格式为:
for(数据类型 变量 : 名称) {

对变量进行操作
}

数据类型和名称就是被遍历的数组或Collection集合的数据类型和名称,括号里直接对变量进行操作就可以实现对整个集合(数组)元素的操作
好处:简化了数组和Collection集合的遍历。但通过反编译以及源码查看,发现原理还是迭代器。


0 0