C与JAVA对比的第二篇:
迭代器是一个我平常写题很不重视的一个方面,导致一些简单题会因为语法问题卡很久…现在既然JAVA学到了迭代器的使用,那我也来顺便做个总结吧。
一:迭代器是什么,有什么用?
迭代器是对C++stl容器和JAVA API类内部元素下标访问的一个方法,由于本身不支持数组的直接访问(除vector和map),需要通过迭代器进行访问,由于在像map这样的容器往往不知道内部元素个数,因此迭代器也能进行一个较好的访问和避免越界。
二:迭代器的创建:
C++中有分为iterator和auto两种迭代器,auto可以直接作为一个数据类型创建,方法如下(以set为例):

 set<int>smap;for(int i=1;i<10;++i)smap.insert(i);auto it = smap.begin();

而iterator稍复杂些,方法如下:

 set<int>::iterator iter;//创建一个从容器的begin开始的迭代器

JAVA的创建也非常简单:

     Collection<String> c = new ArrayList<String>();c.add("blue");c.add("eyes");c.add("white");c.add("dragon");         Iterator<String> it =c.iterator();

三:迭代器的遍历
C++中迭代器可以直接当做指针使用遍历,auto与iterator没有区别,获取元素也是如同指针一般在前面加*,方法如下:

 while(it!=smap.end()){cout<<*it<<" ";it++;     }

JAVA则是提供了一个方法来访问和获取元素,即next(),作用是跳转到下一元素以及返回当前元素值,方法如下:

     while(it.hasNext()){System.out.printf(it.next()+" ");}   //blue eyes white dragon

另外,由于迭代器的遍历过程中每次都会比较预期修改次数和实际修改次数,如果不同的话就会产生并发修改异常,因此,在使用迭代器对容器进行遍历时,不能够增减元素,否则会导致迭代器失效。
以上

C++与JAVA迭代器的使用相关推荐

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

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

  2. java 迭代器只遍历了一次的解决方案

    java 迭代器只遍历了一次的解决方案 参考文章: (1)java 迭代器只遍历了一次的解决方案 (2)https://www.cnblogs.com/kinome/p/9969938.html 备忘 ...

  3. 快速失败Vs安全失败(Java迭代器附示例)

    译者:java达人-卍极客 英文出处:Java Concept Of The Day 英文链接:http://javaconceptoftheday.com/(点击文末阅读原文前往) 转载请标注以上声 ...

  4. java迭代器删除两个_两个迭代器的故事

    java迭代器删除两个 当您查看最流行的Java面试问题时,您可能会遇到有关故障快速和故障安全迭代器的问题: 故障快速迭代器和故障安全迭代器之间有什么区别? 简化的答案是: 如果在迭代过程中修改了集合 ...

  5. 使用Java迭代器修改数据时要小心

    随着本学期的结束,我想我会分享一个关于我对Java迭代器非常非常熟悉的小故事. 现实世界语境 就上下文而言,我教第二年的软件组件课程,这是尝试进入该专业的学生的最后障碍. 当然,这门课程对学生来说压力 ...

  6. java迭代器输入的结果_Java学习之Iterator(迭代器)的一般用法 (转)

    迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价 ...

  7. Java迭代器的一般用法

    迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价 ...

  8. java迭代器删除元素_java迭代器中删除元素的操作

    我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的 ...

  9. java迭代器删除元素出异常_java迭代器移除元素出现并发修改异常的原因及解决...

    迭代器(Iterator的对象)主要用于遍历集合,体现的就是迭代器模式. Iterator接口定义了以下四种方法. boolean hasNext():如果集合还没遍历完就返回true. Object ...

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

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

最新文章

  1. Linux Shell编程 test命令
  2. vb如何实现在cad中打开dxf文件_CDR转CAD方法
  3. 【Python】 1055 集体照 (25 分)
  4. DocumentNavigator是什么东东?
  5. ubuntu nginx安装
  6. s5pv210——I2C的代码实践
  7. 拦截器原理多个拦截器执行顺序
  8. linux 系统 电脑,给自己电脑(物理机)安装 linux 系统
  9. c语言学习-输出9*9乘法口诀表
  10. 带有GraphQL数据访问和JWT身份验证的.NET 5服务
  11. js java webservice_js调用webservice中的方法实现思路及代码
  12. 英国政府寻求在2022年成为“全球性网络力量”
  13. 解决:void value not ignored as it ought to be
  14. ios控制视图切换方向
  15. 如何使用PC3000检测硬盘
  16. RuntimeError: cuda runtime error (100) : no CUDA-capable device is detected at /opt/conda/conda-bld/
  17. 如何预防恶意软件的攻击?10项防御措施来帮您!
  18. win10安装消息队列服务器,win10下celery搭建使用
  19. Mac系统升级Python版本(Python2.7升级到Python3.8.2)
  20. 计算机网络(三十二)网络管理

热门文章

  1. php学籍信息管理系统心得_php学生信息管理系统
  2. 如何使用商业图像设计软件ConceptDraw DIAGRAM简化流程图?
  3. 电脑中oracle删不掉,如何完全卸载电脑中的Oracle软件保证第二次成功安装
  4. 华三服务器HDM打不开网页,H3C服务器配置HDM远程管理用户指南_5分享文库
  5. 拉格朗日中值+柯西中值求极限+对于等价无穷小,等价代换,极限的四则运算法则是根本+一元微积分
  6. 教程篇(7.0) 04. FortiClient 部署 ❀ FortiClient EMS ❀ Fortinet 网络安全专家 NSE 5
  7. dnf跨几服务器比较稳定,DNF1228跨区了能干嘛 1228跨区问题解决一览
  8. XTU OJ 1378 Blocks
  9. nfs 客户端卡死问题
  10. Java基础语法96-Java91011新特性