java迭代器实现原理

迭代器就是把一个集合类(如:List,ArrayList)里面的东西一次全取出来,按照原来的顺序排成一个队(比如在医院),然后你对它说"下一个"(.next)的时候,队头那个家伙就出来了(返回一个对象),你就可以给它看病了,然后当没有人了的时候你再喊"下一个",护士小姐就会对你说没有人了(next返回false),你就可以下班了

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class IterateDemo { public static void main(String[] args) {度Collection collection = new ArrayList(); collection.add("abcd"); collection.add("defg"); collection.add("

//迭代器的使用public void useIterator(LinkedList list,Iterator it){it = list.iterator();//将链表的元素迭代出并打印while(it.hasNext())System.out.print(it.next()+"\t");}}

构造器就是构造方法,二者是一回事,是创建类的对象的时候自动调用的.迭代器使用iterator类实现,也就是java.lang.iterable接口中的方法iterator iterator(),具体来说就是对一个集合中的每个元素进行相关的操作.不过,从jdk1.5以后,由于加强型for循环的出现,迭代器使用的就已经很少了.如果还不是很清楚,可以继续追问.

Collection是集合类的接口,Java中的迭代器是对集合中的对象进行操作的,所以把方法中的参数指定为Collection是为了更好的降低Java程序的耦合X,实现若耦合连接,更直白的说:把参数指定为所有集合类的接口(相当于Object类)以后,不论你传进来的是List还是Set,都可以正常的进行迭代.

迭代器是指向队列的首节点,可以理解为第一个元素的前一个地址;如果是循环队列的话,也是最后一个元素的后一个地址.如果不明白什么是队列,建议去学一下数据结构再来学编程.

举个小例子 便于楼主理解 import java.util.ArrayList; import java.util.Iterator; public class Test { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); Iterator it = list.iterator();

由于Java中数据容器众多,而对数据容器的操作在很多时候都具有极大的共X,于是Java采用了迭代器为各种容器提供公共的操作接口.使用Java的迭代器iterator可以使得对容器的遍历操作完全与其底层相隔离,可以到达极好的解耦效果.下面

因为 集合不是数组, 数组是连续分配的内在地址, 数据都在一起的, 所以可以根据前后加减索引找, 而集合的数据不一定在一起, 之前的是通过存储前后的地址实现的, 要查找数据很麻烦,所以JαvA 提供了Iterator 迭代器, 专门用来 得到集合中的每一个元素(每一个数据) 重要的两个方法 hasNext(); 是否存在下一个数据, next(); 返回当前值,并且指针往移一位 所以 基本都是这样的 while(iterator.hasNext()){ System.out.println(iterator.next()); }

你好!就是Itertor啦,当然我还是使用foreach循环,不过原理都是一样的.List list = new ArrayList(); Itertor i = list.itertor(); while(i.hasNext()){ //对当前元素的操作 i.next(); } 这是用Itertor来写的,还可以用foreach来写 for(Integer i : list){ //对当前元素的操作 } 最好理解下迭代原理,不行就用佛如each来写,简单.就是每次把当前元素负给i,当然类型要匹配.我没有在开发工具里写,这些代码段只做参考.如果对你有帮助,望采纳.

java中迭代器的原理,java迭代器实现原理相关推荐

  1. Java 中的 XML:Java 文档模型的用法

    Java 中的 XML:Java 文档模型的用法 英文原文 内容: 代码对比 DOM JDOM dom4j Electric XML XPP 结束语 下一次... 参考资料 关于作者 对本文的评价 相 ...

  2. 在java中使用JMH(Java Microbenchmark Harness)做性能测试

    文章目录 使用JMH做性能测试 BenchmarkMode Fork和Warmup State和Scope 在java中使用JMH(Java Microbenchmark Harness)做性能测试 ...

  3. java 泛型详解、Java中的泛型方法、 java泛型详解

    本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...

  4. java中函数的调用,java中如何调用函数

    java动态调用函数,Java 中使用动态代码,java函数调用,java中如何调用函数 如何在 Java 中调用 C 函数 宗薇 [期刊名称]<网络新媒体技术> [年(卷),期]2000 ...

  5. Java中使用json时java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决

    Java中使用json时java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决 参考文章: (1)Java中使用json时java.lan ...

  6. Java中的增强for循环的实现原理与坑

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 在JAVA中,遍历集合和数组一般有以下三种形式: for (int i = 0; i < ...

  7. 浅谈java中的ServerSocket和Socket的通信原理实现聊天及多人聊天

    聊天,QQ,微信,陌陌很多的即时通讯的软件,不管是桌面端还是移动端,在当今社交的时代都是不可或缺的一部分.这时候说Socket和ServerSocket感觉有点老调重弹感觉,相信很多人早就知道如何使用 ...

  8. Java 中的锁分类以及锁的原理

    锁分类与原理 锁的分类 锁的分类及基本概念 Java对象在内存中的布局: 锁的升级过程: 锁的本质: synchronized 与Lock 的区别: 互斥锁的原理: 1.读写锁 2.读写锁的原理 3. ...

  9. java中的算数运算符号用法与原理分析

    一.表达式求值简单说明: 1.求值表达式主要包括加减乘除四种基本运算,其实表达式可以看做由一个个二元运算构成,前一个二元运算的结果作为后一个二元运算的输入. 举个例子: "1+2-4=&qu ...

  10. java中iterator_如何在Java中读取CSV文件-Iterator和Decorator的案例研究

    java中iterator 在本文中,我将讨论如何使用Apache Common CSV读取CSV(逗号分隔值)文件. 从这个案例研究中,我们将学习如何在设计模式的上下文中使用Iterator和Dec ...

最新文章

  1. 柯尼卡美能达打印机c226使用说明_高效便捷柯尼卡美能达C226复印机优惠中-柯尼卡美能达 C226_西安复印机行情...
  2. 乔致庸晚年有白银一千万两,相当于现在多少钱?
  3. 用汇编语言与C语言实验其他排序,微机原理实验报告冒泡排序
  4. [转]六步使用ICallbackEventHandler实现无刷新回调
  5. Java WebService使用简单教程
  6. Win10激活 及 图标整理
  7. json文件格式转换为png文件格式
  8. “向死而生”的微信视频号,逆风翻盘的2020
  9. Linux实用命令杂集
  10. 大数据之oracle:next_day函数
  11. Unity3D for Android 纹理压缩支持
  12. php 数组 按拼音首字母 排序 并分组
  13. LinkedList面试要点总结
  14. Android 10获取手机相册照片变成白色空白
  15. 解决“javac不是内部或外部命令,也不是可运行的程序”问题
  16. ios系统和android比较大小,iOS系统和安卓系统对比,有哪些优势和不足?
  17. Android 数据持久化
  18. 将中文汉字转换成拼音(全拼)
  19. DWDM光模块和CWDM光模块的区别
  20. js parseFloat 会丢失精度

热门文章

  1. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校学生在线选课系统q399g
  2. Day239.RBAC模式、动态加载用户权限资源规则数据规则、【记住我】注销多次登录图片验证码session验证码验证功能 -springsecurity-jwt-oauth2
  3. 【Matlab破损识别】机器视觉+SVM玉米种子破损识别(带面板)【含GUI源码 1651期】
  4. 【跟读书导师高鸿鹏学读书】-07如何赚到人生的第一桶金(上)
  5. web上的用户登录功能
  6. Qt 点击ToolButton按钮弹出新的窗口
  7. 上市公司共同机构所有权数据-附顶刊《管理世界》数据应用示例
  8. 2017年平均工资发布:IT业超13万元居首 你达标了吗?
  9. linux如何切换到独立显卡,Ubuntu中独立显卡不好用如何关闭独立显卡
  10. formn 表单 table表格