1、Iterator接口:

Iterator接口包含三个方法:hasNext,next,remove

Iterator常用于对集合进行 一边遍历一边修改 的操作

注意:当Iterator迭代访问Collection集合中元素时,Collection的元素不能改变(多个线程的修改),只有通过Iterator的remove()方法删除上一次next()方法返回集合才可以。

2、迭代器和for循环的效率比较

for循环调用get()方法,是随机访问;

iterator调用next()方法,是顺序访问;

举例说明:
若使用ArrayList,对随机访问比较快,因此适合用for循环较快;
若使用LinkedList,对顺序访问比较快,因此适合用iterator迭代访问;

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

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

3)用for-each处理集合中的每个元素而不用考虑集合定下标,就是为了让用Iterator简单。但是删除的时候,区别就是在remove,循环中调用集合remove会导致原集合变化导致错误,而应该用迭代器的remove方法。

原文链接:https://blog.csdn.net/Jae_Wang/article/details/80526216

3、遍历ArrayList & LinkedList

实验证明,遍历一个ArrayList 和 一个LinkedList,ArrayList 的遍历速度更快,可能因为底层实现是数组。

Java迭代器 for循环的区别相关推荐

  1. java for in 循环_js的for in循环和java里foreach循环的区别分析

    本文实例分析了js的for in循环和java里foreach循环的区别.分享给大家供大家参考.具体分析如下: js里的for in循环定义如下: for(var variable in obj) { ...

  2. java三种循环的区别_JavaSE三种循环注意点

    while 和 do...while的区别: 当判断条件表达式为false的时候, do...while会执行一次do{}中的代码.而while则直接跳过循环. while .do...while.f ...

  3. java迭代器和for循环区别_迭代器和增强for循环

    Iterator迭代器的使用: 迭代:Iterator,即collection集合元素的通用获取方式 java.util.Iterator接口.迭代器(对集合进行遍历) 有两个常用的方法 Boolea ...

  4. Java迭代器(转)(iterator详解以及和for循环的区别)

    摘自http://septiny.com/java/2014/09/24/java-iterator-and-for.html 迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对 ...

  5. 【java迭代器Iterator】获取单个元素,循环遍历和删除

    java迭代器Iterator 什么是Iterator 怎么获取Iterator对象 Iterator三个常用方法 E next() 获取单个元素 boolean hasNext() 可用于循环遍历 ...

  6. java 迭代器的优缺点_java迭代器和for循环优劣详解

    在进行迭代的时候,程序运行的效率也是我们挑选迭代方法的重要原因.目前有三种迭代方法:for循环.迭代器和Foreach.前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一 ...

  7. 【Java-Java集合】Java集合详解与区别

    [Java-Java集合]Java集合详解与区别 1)概述 2)集合框架图 2.1.总框架图 2.2.Iterable 框架图 2.3.Map 框架图 3)List 3.1.ArrayList 类继承 ...

  8. java 增强for循环 i_java入门 -- 增强for循环

    import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; ...

  9. java 迭代器跳出迭代_Java迭代器– Java中的迭代器

    java 迭代器跳出迭代 In this post we are going to discuss about some basics of Java Enumeration and in-depth ...

最新文章

  1. dice系数 交叉熵_语义分割中的损失函数
  2. 跟我一起写 Makefile(六)
  3. android ------- 开发者的 RxJava 详解
  4. 修改Visual Stdio 2010界面,以及添加一些其它VS2010的插件
  5. ML.NET 示例:将ML.NET模型导出到ONNX
  6. 表格列求和_excel表格制作,Excel表格的基本操作,包含制作一个表格10方面的知识...
  7. 设置MYSQL数据库编码为UTF-8
  8. python管理系统web版_Python学生管理系统(web网页版)-Go语言中文社区
  9. 【Docker】docker设置固定ip地址
  10. rbenv mysql_mysql-无法在macOS Si上安装mysql2 gem
  11. 微软发布 VS Code Remote,开启远程开发新时代!
  12. [见得多了就懂了]食物链
  13. java 需要返回类型_在Java中,当一个方法不需要返回数据时返回类型必须是
  14. 英语专升本——常考固定搭配【一百零八将】
  15. C# 实现eval,支持任意个数、任意基本类型的参数
  16. 摸爬滚打DirectX11_day02——VS2010+DirectX11的环境配置
  17. ITest:京东数科接口自动化测试实践
  18. 【Chrome-Charset】Chrome设置字符集
  19. 华为防火墙通用配置详解
  20. 全志T5环境编译错误解决

热门文章

  1. 【蓝桥杯单片机组模块】4、按键模块
  2. 利用下班时间做博主,不露脸也能拍vlog视频!从拍摄、剪辑到配音
  3. java-net-php-python-jsp员工考勤管理系统计算机毕业设计程序
  4. CodeForces - 939E Maximize! [尺取法]
  5. oracle 差分备份,Oracle数据库RMAN备份与恢复:备份与恢复(手机搬家)
  6. Android开发之Services详解
  7. vue项目优化 - 网站首屏加载时间
  8. vue环境的搭建过程
  9. 爬虫最终版(评论爬取)
  10. 【SQL】INSERT