简介:迭代器,有时称为游标,是一种程序设计的软件设计模式。它是一个可以在整个容器(如链表或数组)中访问的接口。设计者不需要关心容器的内容。
1.函数:iterator使开发人员能够在类或结构中支持foreach迭代,而无需实现ienumerable或ienumerator接口。只需提供一个迭代器来遍历类中的数据结构。当编译器检测到迭代器时,它将自动生成ienumerable接口或ienumerator接口的current、movenext和dispose方法。
2.特点:(1)迭代器是一段代码,可以返回相同类型的有序值序列。(2)迭代器可以用作方法、运算符或get访问器的代码体。(3)迭代器代码使用yieldreturn语句依次返回每个元素,yieldbreak终止迭代。(4)可以在一个类中实现多个迭代器。每个迭代器必须像任何类成员一样具有唯一的名称,并且可以由客户机在foreach语句中调用。代码如下:foreach(intxin)simpleclass.iterator2){}。(5)迭代器的返回类型必须是ienumerable或ienumerator。
在python中,一切都是对象,对象的抽象是类,对象的集合是容器。在python中,列表、组、字典和集合都是容器。python中的所有容器都可以迭代,这与枚举有本质的不同。
迭代器是用于迭代操作的对象,可以迭代以获得每个对象,就像列表一样。这种方法与我们通常对列表中所有元素进行for循环遍历的区别在于,在构建迭代器时,它不像列表那样一次将所有元素加载到内存中,而是以延迟计算的方式返回元素。这就是为什么我们前面提到的,我们可以大大减少内存消耗。在调用下一个方法之前,它不会返回元素(本质上,for循环连续调用迭代器的下一个方法)。
python使用生成器支持延迟操作。所谓的延迟操作意味着结果只能在需要时产生,而不是立即产生。这也是发电机的主要优点。生成器提供一个延迟操作,它不返回结果,而是使用。生成器函数是常规函数的定义,但它使用语句而不是返回语句来返回结果。语句一次返回一个结果。在每个结果的中间,函数的状态被挂起,以便下次可以在它离开的地方执行。
我们用来编写python代码的for-in语句是隐式更改上述迭代过程。生成器是一个特殊的高级迭代器,它不像迭代器那样占用大量内存。只有使用它才能调用它来生成相应的对象,这样可以减少内存占用,优化程序结构,提高程序速度。
iterator
iterator是一种设计模式,它是一个对象,它可以遍历和选择序列中的对象,开发人员不需要了解序列的底层结构。
迭代器通常被称为“轻量级”对象,因为它们的创建成本很低。java中的迭代器函数相对简单,只能向一个方向移动:
(1)iterator()方法要求容器返回迭代器。第一次调用迭代器的next()方法时,它返回序列的第一个元素。
注意:iterator()方法是java.lang.iterable语言接口,由集合继承。
(2)使用next()获取序列中的下一个元素。
(3)使用hasnext()检查序列中是否还有元素。
(4)使用remove()删除迭代器新返回的元素。
iterator是javaiterator最简单的实现。为列表设计的listiterator有更多的函数。它可以从两个方向遍历列表,还可以从列表中插入和删除元素。
删除其中一个时,对应数组中的元素会清空删除位置的下标,然后将后续数据逐个向前推,导致最后一个位置的下标为空。当您到达最后一个位置时,如果没有数据,数组将被报告为越界。迭代器的原理是只有在有下一项时才取值,没有下标,这样可以保证数据的一致性
迭代:
1。调用你自己的方法,或者递归。我不需要说太多。
2.另一种解释是:许多程序都有迭代器。这是一个用于“遍历”数组的工具对象。通常遍历数组是使用从0到最后的循环变量,或者使用链表遍历刻度的内容。迭代器可以遍历数组的所有成员,而不必关注数组的具体实现。遍历:访问数据结构中每个成员的操作就是遍历。就像遍历一个列表。最常见的问题是遍历树。常用的遍历树的方法有:一阶/中阶/二阶,或按另一纬度、宽度遍历和深度遍历。相关的具体算法可以找到其他信息。