本教程操作环境:windows7系统、java10版,DELL G3电脑。
1.迭代器的好处
(1)迭代器可以提供统一的迭代方式。
(2)迭代器也可以在对客户端透明的情况下,提供各种不同的迭代方式。
(3)迭代器提供一种快速失败机制,防止多线程下迭代的不安全操作。
不过对于第三点尚需注意的是:我们不能保证迭代过程中出现“快速失败”的都是因为同步造成的,因此为了保证迭代操作的正确性而去依赖此类异常是错误的!
2.迭代器模式的原理
说明 :
(1)Iterator :迭代器接口,是系统提供,含义 hasNext、next、remove
(2)ConcreteIterator :具体的迭代器类,管理迭代。
(3)Aggregate :一个统一的聚合接口,将客户端和具体聚合解耦。
(4)ConcreteAggreage :具体的聚合持有对象集合,并提供一个方法,返回一个迭代器,该迭代器可以正确遍历集合
(5)Client :客户端,通过Iterator和Aggregate依赖子类。
3.源码分析
ArrayList中迭代器的具体实现如下:
public interface Inteator { public abstract boolean hasNext(); public abstract Object next(); } public interface Iterable { Iterator iterator(); } public interface Collection extends Iterable { Iterator iterator(); } public interface List extends Collection { Iterator iterator(); } public calss ArrayList implements List { public Iterator iterator() { return new Itr(); } private class Itr implements Iterator { //接口的具体实现类 //包含了 所需功能 next() hasNext() 等 } } //编译看左边,运行看右边~~~
以上就是java迭代器的原理分析,相信大家经过本篇的学习,已经对迭代过程和接口的一些用法有所掌握。对于其基本组成部件还没有理解的,可以多看看上方的图解。