Iterator的总结与思考

迭代器(Iterator)模式,又叫做游标(Cursor)模式。

-----提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。

从定义可见,迭代器模式是为容器而生。很明显,对容器对象的访问必然涉及到遍历算法。你可以一股脑的将遍历方法塞到容器对象中去;或者根本不去提供什么遍历算法,让使用容器的人自己去实现去吧。

这两种情况好像都能够解决问题。然而在前一种情况,容器承受了过多的功能,它不仅要负责自己“容器”内的元素维护(添加、删除等等),而且还要提供遍历自身的接口;而且由于遍历状态保存的问题,不能对同一个容器对象同时进行多个遍历。第二种方式倒是省事,却又将容器的内部细节暴露无遗。

迭代器模式的出现,很好的解决了上面两种情况的弊端。Iterator是一个接口,集合容器以内部类的形式实现该接口,以实现功能。

Java中迭代器的用法:

************************************************************************

Iterator iterator = obj.iterator ();

while(iterator .hasNext())

{

System.out.println(iterator.getNext());

}

************************************************************************

以上代码为模板代码,用于遍历集合中的元素。

常用方法:

add() 增加元素

remove() 删除某元素

removeAll() 删除所有元素

*************************************************************************

ListIterator是Iterator的子接口,对其功能的扩展。

Iterator和ListIterator主要区别有:

1、ListIterator有add()方法,可以向List中添加对象,而Iterator不能。(增)

2、都可实现删除对象,Iterator仅能遍历,不能修改。ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator 没有此功能。因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。(删)

3、ListIterator可以实现对象的修改,set()方法可以实现。(改)

4、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。(查)







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值