迭代器Iterator;ListIterator快速失败(fail-fast)和安全失败(fail-safe)

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。   

Java中的Iterator功能比较简单,并且只能单向移动:   

(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。

注意:iterator()方法是java.lang.Iterable接口,被Collection继承。   

(2) 使用next()获得序列中的下一个元素。   

(3) 使用hasNext()检查序列中是否还有元素。   

(4) 使用remove()将迭代器新返回的元素删除。   

Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

Iterator和ListIterator的区别是什么?

    

快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?

快速失败:当你在迭代一个集合的时候,如果有另一个线程正在修改你正在访问的那个集合时,就会抛出一个ConcurrentModification异常。

    在java.util包下的都是快速失败。

安全失败:你在迭代的时候会去底层集合做一个拷贝,所以你在修改上层集合的时候是不会受影响的,不会抛出ConcurrentModification异常。

    在java.util.concurrent包下的全是安全失败的。

猜你喜欢

转载自blog.csdn.net/weixin_40569991/article/details/88639456