在我们学集合的时候,用了两周遍历集合的方式,一个是迭代器(iterator),另一个是增强for循环。增强for循环底层说到底也是用的迭代器,那迭代器是怎么实现的呢?
不同的集合作为实现类,使用迭代器返回的值是都是不一样的。我们先看一下ArrayList集合迭代器的实现原理。
首先先看一下迭代器的写法:
迭代器是一个接口,我们通多创建迭代器对象,然后调用它的两个方法hasNext()判断是否有下一个元素和next()获取元素。从而遍历数组。
只是简单的一个写法,看不出什么,我们跟进ArrayListl类的Iterator方法的源码看一眼。
发现他new了一个Iterator的实现类: Itr
继续跟进之后,发现写法比较特殊,他是一个ArrayList的成员内部类。
继续跟进之后他就返回迭代器对象了。
然后我们继续看下一行的代码while里的判断代码,他走到了hasNext()方法。
跟进之后就只有一串很简单的代码 一个判断语句,返