对于数据的遍历,常见的操作方式有两种:循环遍历和迭代器遍历。有时候,我们容易混淆这两种遍历方式,误以为这两种方式并没有根本就没有什么大的区别。

1.定义

(1)循环遍历:一般而言,我们常见的while循环、for循环等都是都是循环遍历的主力军。

(2)迭代器遍历:迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。迭代出来的元素都是原来集合元素的拷贝。

2.如何选择是循环遍历还是迭代器Iterator遍历:

(1)删除:删除元素的时候,循环中调用集合remove会导致原集合变化导致错误(会导致大小改变),而迭代器的remove方法表现得更为安全(迭代出来的元素都是原来集合元素的拷贝)。

(2)访问:采用ArrayList对随机访问比较快,而for循环中的get()方法,采用的即是随机访问的方法,因此在ArrayList里,for循环较快;采用LinkedList则是顺序访问比较快,iterator中的next()方法,采用的即是顺序访问的方法,因此在LinkedList里,使用iterator较快从数据结构角度分析,for循环适合访问顺序结构,可以根据下标快速获取指定元素。而Iterator 适合访问链式结构,因为迭代器是通过next()和Pre()来定位的,可以访问没有顺序的集合 。

(4)统一性:使用 Iterator 的好处在于可以使用相同方式去遍历集合中元素,而不用考虑集合类的内部实现,如果使用 Iterator 来遍历集合中元素,一旦不再使用 List 转而使用 Set 来组织数据,那遍历元素的代码不用做任何修改,如果使用 for 来遍历,那所有遍历此集合的算法都得做相应调整,因为List有序,Set无序,结构不同,他们的访问算法也不一样。

转载于:https://www.cnblogs.com/xiaomingzaixian/p/9748698.html

循环遍历和迭代器遍历如何选择相关推荐

  1. 集合的遍历之迭代器遍历

    集合的遍历之迭代器遍历 A:迭代器概述 集合是用来存储元素,存储的元素需要查看,那么就需要迭代(遍历) B:案例演示 迭代器的使用 Collection c = new ArrayList();c.a ...

  2. 迭代器遍历,增强for遍历

    目录 一.迭代器遍历 二.增强for遍历 三.Lambda表达式遍历 一.迭代器遍历 迭代器遍历:迭代器在Java中的类是Ilterator,迭代器是集合专用的遍历方式: 创建指针,判断是否有元素,获 ...

  3. map迭代器遍历_一口气写了 HashMap 的 7种遍历方式,被同事夸了

    随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从性能. ...

  4. 【Kotlin】循环控制流 ( for 循环 | Iterator 遍历形式 | Iterator 遍历要求 | IntArray 源码解析 )

    文章目录 一.For 循环 二.For 循环遍历 Iterator 对象 三.Iterator 遍历要求 四.IntArray 源码解析 一.For 循环 For 循环有两种遍历形式 : 一种是 遍历 ...

  5. 二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定

    四.事件监听 在前端开发中,我们需要经常和用于交互. 这个时候,我们就必须监听用户发生的时间,比如点击.拖拽.键盘事件等等 在Vue中如何监听事件呢?使用v-on指令 v-on介绍 作用:绑定事件监听 ...

  6. 原生 遍历_迭代器模式统一集合的遍历方式

    今天来介绍迭代器模式(Iterator Design Pattern),它还有另一个名字,叫作游标模式(Cursor Design Pattern). 1,遍历集合元素 现在的高级语言(比如 C++, ...

  7. python迭代器_使用Python的迭代器遍历可迭代对象

    迭代器也是用来遍历对象成员的,前面讨论过使用for循环遍历序列对象成员,为什么Python还要提供迭代器呢? 1.为什么要使用迭代器? 使用for循环可以遍历序列对象,列表.元组.字符串都是序列对象, ...

  8. java collection 遍历_Java for循环对集合的遍历

    原标题:Java for循环对集合的遍历 Java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合 ...

  9. Java深入了解TreeSet,和迭代器遍历方法

    Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...

最新文章

  1. 深度学习笔记七:循环神经网络RNN(基本理论)
  2. 用C#实现支持gmail邮件发送
  3. 线性方程组与基尔霍夫定律
  4. tcp/ip 协议栈Linux内核源码分析12 udp套接字发送流程一
  5. 当前订单不支持只花呗支付是什么意思_1、(跑腿介绍篇)支付宝花呗分期线下推广...
  6. 10月编程语言排行榜,来了!
  7. arcmap shp导出cad无反应_如何使用ArcMap将Excel数据转换为shp数据
  8. 基础编程题之奇数位(偶数位)都是奇数(偶数)
  9. his开发前途如何_八线城市开发人员前途迷思2019年开源年会后记
  10. SQL2005备份如何在SQL2000上还原
  11. C实现utf8与gbk互转
  12. 一行代码统计文本中指定字符串出现的次数
  13. 波士顿学院计算机科学专业,波士顿学院计算机专业
  14. win10计算机管理里找不到设备管理器的解决方法
  15. PE文件加节感染之Win32.Loader.bx.V病毒分析
  16. Python查询七麦APP榜单
  17. Maximum Likelihood(ML) 和 Maximum a posterior(MAP)的直观理解
  18. dz论坛数据库php网址,discuz论坛更换域名,搬家步骤
  19. python爬虫之搜索51job并存入mysql数据库
  20. 2021机动车检测站签字授权人法律法规和规范考试题库及答案

热门文章

  1. 【转载】mysql主键的缺少导致备库hang
  2. oracle网站wget下载
  3. ubuntu20.04 中ifconfig无ens33
  4. Python实现贪吃蛇小游戏(双人模式)
  5. mysql行列转换例子_mysql行列转换示例
  6. ASP.NET Web Forms – 服务器控件简介
  7. 分析2021年私有云市场的发展趋势
  8. 企业的六种数据存储合规性策略
  9. JavaScript初学者编程题(6)
  10. java指定位置写入_java指定路径写、读文件