Iterator迭代器原理
引入
foreach (var item in hand)
{遍历
item.Fly();
}
常见面试题:可以foreach的条件
对象具有迭代器对象(GetEnumerator方法)
或,对象实现IEnumerable接口
迭代器原理与意图
原理:iterator 迭代器对象
意图:访问聚合对象内容而不暴露其内部结构。
提供简单明了的获取集合类型对象的方式。
迭代器实现
调用实现
IEnumerator iterator=hand.GetEnumerator();//创建迭代器对象
//理解为:索引增加 如果返回true表示有元素
while(iterator.MoveNext())// -1 //2.移动到下一个元素
{ //理解为:获取当前索引的元素
IThrowablet = iterator.Current as IThrowable;获取当前元素
t.Fly();
}
迭代器01
1.创建迭代器对象
public IEnumerator GetEnumerator()
{//创建迭代器对象
return new HandEnumerator() {Target = AllObject };
}
2.自定义迭代器对象
//自定义迭代器对象:负责提供一种顺序访问集合类型对象元素的方法。
public class HandEnumerator:IEnumerator
{ public IThrowable[] Target{ get; set; }
private int index = -1;
public object Current
{ get {
return Target[index]; } }
public bool MoveNext()
{
//索引增加
index++;
//true 没有越界 false 越界
return index <=Target.Length - 1;
}
public void Reset()
{ index = -1; }
}
迭代器02
1.利用yeld return 来实现
public IEnumerator GetEnumerator()
{
//1.第一次调用MoveNext方法开始执行方法体
//2.执行到yieldreturn处,暂时退出
//3.再次调用MoveNext方法,从yield return处继续执行。
//循环到2步……
//yieldreturn 将自动创建迭代器对象
for (int i = 0; i <AllObject.Length; i++)
{
yield return AllObject[i];//暂时退出
}
}
Iterator迭代器原理相关推荐
- Java集合迭代器原理图解_Java Iterator接口遍历单列集合迭代器原理详解
这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator接口概述 ...
- 设计模式(十五):Iterator迭代器模式 -- 行为型模式
1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用 ...
- Iterator迭代器接口讲解
Iterator迭代器接口 使用Iterator接口遍历集合元素 1 Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素. 2 GOF给迭代器模式的定义 ...
- [导入]C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式.zip(8.04 MB)...
讲座内容: 本培训课程探讨GoF23之 Iterator 迭代器模式的意图.动因.原理.应用场景与C#语言实现,以及该模式在.NET框架程序设计中的具体应用. 课程讲师: 李建忠 上海祝成信息科技有限 ...
- JAVA day15 Collection(集合)、Iterator迭代器、泛型<E>
1.Collection(集合) 集合:集合是java中提供的⼀种容器,可以⽤来存储多个数据. 集合与数组的区别: 数组的长度是固定的,集合的长度是可变的. 数组中存储的是同⼀类型的元素,可以存储基本 ...
- 【java笔记】Iterator迭代器 增强for
Iterator接口: 接口java.util.Iterator遍历集合中的所有元素.Iterator对象主要用于遍历Collection中的元素,因此Iterator对象也被称为迭代器 迭代: Co ...
- JavaSE Collections类 , Iterator迭代器 , 增强for循环
Collections 它是集合的工具类,为集合体系扩展了一些其他的方法.类中都是静态的方法,可以使用类名直接调用. 可变参数 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类 ...
- 进阶04 4 Collection集合类+Iterator迭代器+增强for+泛型
文章目录 Collection集合 集合概述 java.util.Collection接口 Iterator迭代器 Iterator接口 Iterator接口的常用方法 说明 迭代器实现原理图: 增强 ...
- 2.Collection、Iterator迭代器、泛型、斗地主案例
Collection集合 1.1 集合概念及其与数组的区别 集合:集合是java中提供的一种容器,可以用来存储多个数据. 与数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型 ...
最新文章
- AI一分钟 | NLP先驱Aravind Joshi教授去世,曾获ACL终身成就奖;年度花木兰诞生,甘薇全权负责贾跃亭的一地鸡毛
- 计算机文化基础案例教程第三版答案,计算机文化基础案例教程(第3版 谭宁)教学课件 素材.zip-排骨做法.doc...
- (Oracle学习笔记) Oracle概述
- 封装javascript分页插件——可以使用的测试版(β版)
- IdentityServer4系列 | 初识基础知识点
- Linux 关于查看 cpu 的命令
- 怎么查询局域网内全部电脑IP和mac地址..
- php 5.6 mcrypt,php 5.6.36 安装mcrypt
- python向数据库插入中文乱码问题
- SAP License:谁能透露你的信息
- java--基本数据类型的转换(强制转换)
- css怎么实现加载的圆圈_图像高清方案——响应式图像让图像加载又快又省
- powershell:move-item
- 关联查询objectid_SAP 删除的BOM如何查询呢?
- Latex显示无限循环小数
- TV(电视)应用开发指南
- 速写中的颈部肌肉怎么表现?详细画法看这里~
- 2021新宁二中高考喜报成绩查询,新宁二中举行2021年高考倒计时100天誓师大会
- 深扒程序员外包,为啥我不建议你去外包公司?
- 堆外缓存OHCache使用总结
热门文章
- 博后招募 | 西湖大学工学院蓝振忠深度学习实验室招募博士后
- 无需Grouping,中科大和微软亚研院提出Group-Free的三维物体检测方法,性能远超之前最好方法。...
- 哈佛NLP组论文解读:基于隐变量的注意力模型 | 附开源代码
- ACM-ICPC 2017 Asia Nanning
- Java判断一组数字是否是等差数列
- C++ pthread
- 电子工程可以报考二建_非工程类专业可以报考二建吗?哪些省份不限制报考专业?...
- 电路图符号大全_电工必备电路图符号大全 图解复杂电路图解析方式 值得收藏!...
- node windows更新_node.js 01 简介 - 产生,发展历程,优势,适用场景,实际应用
- Springboo零配置原理