引入

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迭代器原理相关推荐

  1. Java集合迭代器原理图解_Java Iterator接口遍历单列集合迭代器原理详解

    这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator接口概述 ...

  2. 设计模式(十五):Iterator迭代器模式 -- 行为型模式

    1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用 ...

  3. Iterator迭代器接口讲解

    Iterator迭代器接口 使用Iterator接口遍历集合元素 1 Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素. 2 GOF给迭代器模式的定义 ...

  4. [导入]C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式.zip(8.04 MB)...

    讲座内容: 本培训课程探讨GoF23之 Iterator 迭代器模式的意图.动因.原理.应用场景与C#语言实现,以及该模式在.NET框架程序设计中的具体应用. 课程讲师: 李建忠 上海祝成信息科技有限 ...

  5. JAVA day15 Collection(集合)、Iterator迭代器、泛型<E>

    1.Collection(集合) 集合:集合是java中提供的⼀种容器,可以⽤来存储多个数据. 集合与数组的区别: 数组的长度是固定的,集合的长度是可变的. 数组中存储的是同⼀类型的元素,可以存储基本 ...

  6. 【java笔记】Iterator迭代器 增强for

    Iterator接口: 接口java.util.Iterator遍历集合中的所有元素.Iterator对象主要用于遍历Collection中的元素,因此Iterator对象也被称为迭代器 迭代: Co ...

  7. JavaSE Collections类 , Iterator迭代器 , 增强for循环

    Collections 它是集合的工具类,为集合体系扩展了一些其他的方法.类中都是静态的方法,可以使用类名直接调用. 可变参数 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类 ...

  8. 进阶04 4 Collection集合类+Iterator迭代器+增强for+泛型

    文章目录 Collection集合 集合概述 java.util.Collection接口 Iterator迭代器 Iterator接口 Iterator接口的常用方法 说明 迭代器实现原理图: 增强 ...

  9. 2.Collection、Iterator迭代器、泛型、斗地主案例

    Collection集合 1.1 集合概念及其与数组的区别 集合:集合是java中提供的一种容器,可以用来存储多个数据. 与数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型 ...

最新文章

  1. AI一分钟 | NLP先驱Aravind Joshi教授去世,曾获ACL终身成就奖;年度花木兰诞生,甘薇全权负责贾跃亭的一地鸡毛
  2. 计算机文化基础案例教程第三版答案,计算机文化基础案例教程(第3版 谭宁)教学课件 素材.zip-排骨做法.doc...
  3. (Oracle学习笔记) Oracle概述
  4. 封装javascript分页插件——可以使用的测试版(β版)
  5. IdentityServer4系列 | 初识基础知识点
  6. Linux 关于查看 cpu 的命令
  7. 怎么查询局域网内全部电脑IP和mac地址..
  8. php 5.6 mcrypt,php 5.6.36 安装mcrypt
  9. python向数据库插入中文乱码问题
  10. SAP License:谁能透露你的信息
  11. java--基本数据类型的转换(强制转换)
  12. css怎么实现加载的圆圈_图像高清方案——响应式图像让图像加载又快又省
  13. powershell:move-item
  14. 关联查询objectid_SAP 删除的BOM如何查询呢?
  15. Latex显示无限循环小数
  16. TV(电视)应用开发指南
  17. 速写中的颈部肌肉怎么表现?详细画法看这里~
  18. 2021新宁二中高考喜报成绩查询,新宁二中举行2021年高考倒计时100天誓师大会
  19. 深扒程序员外包,为啥我不建议你去外包公司?
  20. 堆外缓存OHCache使用总结

热门文章

  1. 博后招募 | 西湖大学工学院蓝振忠深度学习实验室招募博士后
  2. 无需Grouping,中科大和微软亚研院提出Group-Free的三维物体检测方法,性能远超之前最好方法。...
  3. 哈佛NLP组论文解读:基于隐变量的注意力模型 | 附开源代码
  4. ACM-ICPC 2017 Asia Nanning
  5. Java判断一组数字是否是等差数列
  6. C++ pthread
  7. 电子工程可以报考二建_非工程类专业可以报考二建吗?哪些省份不限制报考专业?...
  8. 电路图符号大全_电工必备电路图符号大全 图解复杂电路图解析方式 值得收藏!...
  9. node windows更新_node.js 01 简介 - 产生,发展历程,优势,适用场景,实际应用
  10. Springboo零配置原理