javaSE集合框架的迭代操作

集合的迭代操作 :
把集合中的元素一个一个遍历取出来
迭代器对象 :
Iterator : 迭代器对象,只能从上往下迭代.
boolean hasNext() : 判断当前指针后是否有下一个元素.
object next() : 获取指针的下一个元素并且移动指针.
ListIterator : 是Iterator接口的子接口,支持双向迭代.
Enumeration : 古老的迭代器(适用于古老的Vector类).
javaSE集合框架的迭代操作_第1张图片
迭代
  • 方式一 : for循环
    for循环
  • 方式二 : for each增强for循环
    javaSE集合框架的迭代操作_第2张图片
    for each增强
  • 方式三 : 用while循环操作迭代器Iterator
    javaSE集合框架的迭代操作_第3张图片
    while+迭代器
  • 方式四(实用) : 用while循环操作迭代器
    for+迭代器

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

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

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

for(类型 变量 : 数组名/Iterable实例){
//TODO
}
javaSE集合框架的迭代操作_第4张图片
for-each操作数组

javaSE集合框架的迭代操作_第5张图片
for-each操作集合

注意有例外↓

当需要变迭代集合元素,边删除指定元素时,使用for-each会发生异常.只能使用迭代器对象的remove方法..

编译后会出现如下异常:
javaSE集合框架的迭代操作_第6张图片
并发修改异常

如何解决异常?

不要使用结合对象的删除方法(boolean remove(Object ele)).
要使用Iterator中的remove方法.
该方法会从两个线程中同时移除此元素,保证了两个线程的同步.
javaSE集合框架的迭代操作_第7张图片
此时只能使用迭代器对象调用

你可能感兴趣的:(javaSE集合框架的迭代操作)