java中为什么要用迭代器Iterator

要薅秃了 2019-09-07 08:52:32
Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。遍历容器中的每个对象而不用考虑容器中对象的个数,而且保护数据不显示的表现出来。
...全文
801 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
是赵敢敢啊 2021-05-13
  • 打赏
  • 举报
回复
for循环的时候不能使用remove方法, 会导致报错CME并发修改异常,但是使用迭代器的remove就不会
番茄chao鸡蛋 2021-05-12
  • 打赏
  • 举报
回复
引用 4 楼 柔风染千里 的回复:
引用 3 楼 番茄chao鸡蛋 的回复:
如果集合长度变化呢?这个时候就要用迭代器了
不知道有个东西叫size么?
每次删元素 遍历的时候长度在变 对应下边的元素也可能发能变化了
=PNZ=BeijingL 2021-04-28
  • 打赏
  • 举报
回复 1
使用for 循环语句的优势在于更加简洁,更不容易出错,不必关心下标的起始值和终止值。最大的不同之处就在于remove()方法上。


效率上的各有有事
采用ArrayList对随机访问比较快,而for循环中的get()方法,采用的即是随机访问的方法,因此在ArrayList里,for循环较快
采用LinkedList则是顺序访问比较快,iterator中的next()方法,采用的即是顺序访问的方法,因此在LinkedList里,使用iterator较快

从数据结构角度分析
for循环适合访问顺序结构,可以根据下标快速获取指定元素.而Iterator 适合访问链式结构,因为迭代器是通过next()和Pre()来定位的.可以访问没有顺序的集合.

使用 Iterator 的好处在于可以使用相同方式去遍历集合中元素,而不用考虑集合类的内部实现(只要它实现了 java.lang.Iterable 接口),如果使用 Iterator 来遍历集合中元素,一旦不再使用 List 转而使用 Set 来组织数据,那遍历元素的代码不用做任何修改,如果使用 for 来遍历,那所有遍历此集合的算法都得做相应调整,因为List有序,Set无序,结构不同,他们的访问算法也不一样.
柔风染千里 2021-04-26
  • 打赏
  • 举报
回复
引用 3 楼 番茄chao鸡蛋 的回复:
如果集合长度变化呢?这个时候就要用迭代器了
不知道有个东西叫size么?
番茄chao鸡蛋 2019-09-07
  • 打赏
  • 举报
回复
如果集合长度变化呢?这个时候就要用迭代器了
zxf1234556 2019-09-07
  • 打赏
  • 举报
回复
感谢分享…………
cwmlow 2019-09-07
  • 打赏
  • 举报
回复
你这问题跟我这回答差不多 我不管 for循环天下第一

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧