星空网 > 软件开发 > Java

JAVA迭代器学习

1,迭代器是能够对数据结构如集合(ADT的实现)进行遍历的对象。在遍历过程中,可以查看、修改、添加以及删除元素,这是它与一般的采用循环来遍历集合中的元素不同的地方。因为,通常用循环进行的遍历操作一般是逐个输出元素,而用迭代器不仅仅只是查看元素,还可以改变元素。

2,在JAVA类库中定义了两个常用的迭代器接口:Iterator和ListIterator,它们为迭代器指定了方法。给某个具体的ADT实现(如,单链表)添加迭代器功能时有以下两种方式:(以链表为例)①将迭代器方法添加到ADT线性表的操作中

②将迭代器定义为一个与ADT线性表相互作用的单独的类。它又分两种情况:将该类定义在ADT线性表外部和将该类定义在线性表内部(具体地说,应为将该类定义在实现线性表ADT接口的类的内部)

3,ADT线性表的display操作(见博文:)执行了一次迭代,但是它仅仅是显示线性表,若还想在遍历的同时对线性表进行其它的操作呢?显然,我们不希望每次需要遍历ADT中的元素时,就构建循环,而是应将线性表的遍历封装起来。

4,Iterator接口中只定义了三个方法

hasNext() :当迭代到最后一个元素时,再调用hasNext()将会抛出NoSuchElementException异常

next() :返回当前被迭代过的元素,刚刚被迭代器指针跳跃过的元素

remove() :该方法根据实际的需要来实现该方法,如:客户不需要remove操作时,可以在实现remove()方法时抛出UnsupportedOperationException

注意:在JAVA中,迭代器位置不是在某个元素上,而是在集合的第一个元素之前、两个元素之间或最后一个元素之后。

5,如何给ADT线性表添加迭代器功能呢?正如在第2点中提到的,可以有三种方式来实现

❶将遍历操作定义为ADT操作,如:ListIterator 接口扩展了 Iterator,那么线性表对象就同时具有迭代器方法和线性表方法了。

❷在自己的类中实现迭代器方法,该类是公共类,与实现ADT的类分开了。这种迭代器实例为独立类迭代器

❸在自己的类中实现迭代器方法,该类是内部类,定义在实现ADT的类的内部,该类作为实现ADT类的一个私有内部类。称之为内部类迭代器。

具体实现未完待续……

 




原标题:JAVA迭代器学习

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Best Sellers:https://www.ikjzd.com/w/151
BIGO LIVE:https://www.ikjzd.com/w/1510
智赢:https://www.ikjzd.com/w/1511
全球跨境电子商务协会_GCBEA:https://www.ikjzd.com/w/1512
巨方股份:https://www.ikjzd.com/w/1513
三十六计电商_跨境电商一站式服务解决专家:https://www.ikjzd.com/w/1514
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流