java中迭代器的原理,java迭代器实现原理
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迭代器实现原理相关推荐
- Java 中的 XML:Java 文档模型的用法
Java 中的 XML:Java 文档模型的用法 英文原文 内容: 代码对比 DOM JDOM dom4j Electric XML XPP 结束语 下一次... 参考资料 关于作者 对本文的评价 相 ...
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
文章目录 使用JMH做性能测试 BenchmarkMode Fork和Warmup State和Scope 在java中使用JMH(Java Microbenchmark Harness)做性能测试 ...
- java 泛型详解、Java中的泛型方法、 java泛型详解
本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...
- java中函数的调用,java中如何调用函数
java动态调用函数,Java 中使用动态代码,java函数调用,java中如何调用函数 如何在 Java 中调用 C 函数 宗薇 [期刊名称]<网络新媒体技术> [年(卷),期]2000 ...
- Java中使用json时java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决
Java中使用json时java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决 参考文章: (1)Java中使用json时java.lan ...
- Java中的增强for循环的实现原理与坑
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 在JAVA中,遍历集合和数组一般有以下三种形式: for (int i = 0; i < ...
- 浅谈java中的ServerSocket和Socket的通信原理实现聊天及多人聊天
聊天,QQ,微信,陌陌很多的即时通讯的软件,不管是桌面端还是移动端,在当今社交的时代都是不可或缺的一部分.这时候说Socket和ServerSocket感觉有点老调重弹感觉,相信很多人早就知道如何使用 ...
- Java 中的锁分类以及锁的原理
锁分类与原理 锁的分类 锁的分类及基本概念 Java对象在内存中的布局: 锁的升级过程: 锁的本质: synchronized 与Lock 的区别: 互斥锁的原理: 1.读写锁 2.读写锁的原理 3. ...
- java中的算数运算符号用法与原理分析
一.表达式求值简单说明: 1.求值表达式主要包括加减乘除四种基本运算,其实表达式可以看做由一个个二元运算构成,前一个二元运算的结果作为后一个二元运算的输入. 举个例子: "1+2-4=&qu ...
- java中iterator_如何在Java中读取CSV文件-Iterator和Decorator的案例研究
java中iterator 在本文中,我将讨论如何使用Apache Common CSV读取CSV(逗号分隔值)文件. 从这个案例研究中,我们将学习如何在设计模式的上下文中使用Iterator和Dec ...
最新文章
- 柯尼卡美能达打印机c226使用说明_高效便捷柯尼卡美能达C226复印机优惠中-柯尼卡美能达 C226_西安复印机行情...
- 乔致庸晚年有白银一千万两,相当于现在多少钱?
- 用汇编语言与C语言实验其他排序,微机原理实验报告冒泡排序
- [转]六步使用ICallbackEventHandler实现无刷新回调
- Java WebService使用简单教程
- Win10激活 及 图标整理
- json文件格式转换为png文件格式
- “向死而生”的微信视频号,逆风翻盘的2020
- Linux实用命令杂集
- 大数据之oracle:next_day函数
- Unity3D for Android 纹理压缩支持
- php 数组 按拼音首字母 排序 并分组
- LinkedList面试要点总结
- Android 10获取手机相册照片变成白色空白
- 解决“javac不是内部或外部命令,也不是可运行的程序”问题
- ios系统和android比较大小,iOS系统和安卓系统对比,有哪些优势和不足?
- Android 数据持久化
- 将中文汉字转换成拼音(全拼)
- DWDM光模块和CWDM光模块的区别
- js parseFloat 会丢失精度
热门文章
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校学生在线选课系统q399g
- Day239.RBAC模式、动态加载用户权限资源规则数据规则、【记住我】注销多次登录图片验证码session验证码验证功能 -springsecurity-jwt-oauth2
- 【Matlab破损识别】机器视觉+SVM玉米种子破损识别(带面板)【含GUI源码 1651期】
- 【跟读书导师高鸿鹏学读书】-07如何赚到人生的第一桶金(上)
- web上的用户登录功能
- Qt 点击ToolButton按钮弹出新的窗口
- 上市公司共同机构所有权数据-附顶刊《管理世界》数据应用示例
- 2017年平均工资发布:IT业超13万元居首 你达标了吗?
- linux如何切换到独立显卡,Ubuntu中独立显卡不好用如何关闭独立显卡
- formn 表单 table表格