我的javaSE

javaSE集合框架的迭代操作

2018-02-04  本文已影响0人  冒险小A
集合的迭代操作 :
把集合中的元素一个一个遍历取出来
迭代器对象 :
Iterator : 迭代器对象,只能从上往下迭代.
boolean hasNext() : 判断当前指针后是否有下一个元素.
object next() : 获取指针的下一个元素并且移动指针.
ListIterator : 是Iterator接口的子接口,支持双向迭代.
Enumeration : 古老的迭代器(适用于古老的Vector类).
迭代

深入分析for-each和迭代器 :

1. for-each可以操作数组 : 底层依然采用for循环+索引来获取数组元素.
2. for-each可以操作Iterable实例:底层采用的是Iterator(迭代器).

所以,直接用for-each来迭代数组和集合元素即可,简单.
for-each的语法格式:

for(类型 变量 : 数组名/Iterable实例){
//TODO
}
for-each操作数组
for-each操作集合

注意有例外↓

当需要变迭代集合元素,边删除指定元素时,使用for-each会发生异常.只能使用迭代器对象的remove方法..
编译后会出现如下异常: 并发修改异常

如何解决异常?

不要使用结合对象的删除方法(boolean remove(Object ele)).
要使用Iterator中的remove方法.
该方法会从两个线程中同时移除此元素,保证了两个线程的同步.
此时只能使用迭代器对象调用
上一篇 下一篇

猜你喜欢

热点阅读