Java:Iterator迭代器的实现原理

本文详细解析了迭代器的工作原理及使用方式,介绍了不同集合类(如ArrayList和LinkedList)中迭代器的具体实现,并通过示例代码展示了其核心逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浅述:迭代器就是把一个集合类(如:List,ArrayList)里面的东西一次全取出来,按照原来的顺序排成一个队(比如在医院),然后你对它说"下一个"(.next())的时候,队头那个家伙就出来了(返回一个对象),你就可以给它看病了,然后当没有人了的时候你再喊"下一个",护士小姐就会对你说没有人了(hasNext()返回false),你就可以下班了,就代表着集合遍历结束了。

迭代器的使用:

 

输出结果为:

不同集合类迭代器的实现原理的原码:
            ArrayList类的iterator方法:
                 public Iterator<E> iterator(){
                     return new Itr();
                 }
           我们可以看出在ArrayList类,返回的是new Itr(),new就说明Itr()是Iterator的实现类;
             LinkedList类的iterator方法:
                public Iterator<E> iterator() {
                    return listIterator();
                }
           我们可以看出在 LinkedList类,返回的是listIterator()这个方法;

            ListItr implements ListIterator 
            ListIterator extends Iterator

所以我们可以看到,不同集合类的iterator方法返回的迭代器对象是不同的。

 1.调用iterator方法,实现类会覆盖重写该方法,不同的实现类覆盖重写的是不一样的。

 2.调用iterator方法,返回的是Iterator接口的具体的实现类

ArrayList对迭代器的实现原理: 

 

        以ArrayList为例,ArrayList调用Iterator()方法,Iterator也是个接口,它里面的方法必须通过实现类去使用,从它的迭代器使用的核心代码可以看出,它内部的原理是,ArrayList作为一个类,它里面有个成员内部类就是Itr作为Iterator的实现类去使用boolean hasNext();//判断是否有下一个元素,E next();//获取元素;这些方法,内部类里面有个成员变量游标cursor默认值为0,通过它在hasNext的方法里跟集合元素的个数进行比较判断,如果判断为ture,则在next()方法里获取元素,获取元素的过程中cursor会执行++操作,然后返回到hasNext()方法里继续进行判断看是否有下一个元素,如果为true会一直执行上述操作,直到cursor等于元素个数的时候,它就会返回false,然后整个遍历就结束了,这就是迭代器的使用原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值