迭代器的实现原理

今天来聊一聊迭代器的实现原理,我们首先要搞明白迭代器是什么,它的用途和实现方式。

迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。迭代器的作用是用来访问容器(用来保存元素的数据结构)中的元素,所以使用迭代器,我们就可以访问容器中里面的元素。

Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的迭代方法。迭代器可以在迭代的过程中删除底层集合的元素。这个方法在调用时不需要任何参数,它是访问可迭代序列的一种方式,通常其从序列的第一个元素开始访问,直到所有的元素都被访问才结束。

Iterator接口里面的方法:

  • boolean hasNext();
    该方法英语判断集合对象是否还有下一个元素,如果已经是最后一个元素则返回false
  • E next();
    把迭代器的指向移到下一个位置,同时,该方法返回下一个元素的引用

Java中的Iterator迭代器,它的底层的功能是非常简单的,并且它只能单向移动的,它的使用方法:首先我们需要定义一个Iterator这个方法,然后返回一个Iterator对象,第一次调用这个Iterator的next方法的时候,它返回序列中的第一个元素,接下来我们需要使用next去获取序列中的下一个元素。我们再使用hasNext这个方法区检查序列中是否还有元素,再使用remove将这个序列返回的新的元素删除。

现在我们来说说它的实现原理。当集合遍历时,首先通过调用集合中的iterator()方法获得迭代器对象,然后使用hasNext()方法判断集合中是否存在下一个元素。如果存在,则调用next()方法将元素取出。否则说明遍历已经到达了集合末尾,停止遍历元素。iterator迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素,在调用Iterator的next()方法之前,迭代器的索引位于第一个元素前,不指向任何元素。每调用一次next(),迭代器的索引会指向下一个元素并将该元素返回,直到hasNext()方法返回false,表示到达了集合的末尾,终止对集合的遍历。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值