首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Kotlin】循环控制流 ( for 循环 | Iterator 遍历形式 | Iterator 遍历要求 | IntArray 源码解析 )

文章目录 一、For 循环 二、For 循环遍历 Iterator 对象 三、Iterator 遍历要求 四、IntArray 源码解析 一、For 循环 ---- For 循环有两种遍历形式 : 一种是...遍历提供了迭代器 ( Iterator ) 的对象 ; 另一种是 使用区间表达式进行遍历 ; 二、For 循环遍历 Iterator 对象 ---- 提供了 Iterator 迭代器的对象基本就是 集合...(i in array){ println(i) } } 执行结果 : 遍历集合 0 1 2 3 4 遍历数组 5 6 7 8 9 三、Iterator 遍历要求 ---- 使用...for(i in array) 对 array 对象进行遍历 , 有以下要求 : 被遍历的对象必须 定义了 iterator() 方法 , 返回 Iterator 迭代器类型 , 并且该方法必须 标记为...可以按照顺序遍历元素 ; */ public interface Iterator { /** * 返回迭代器的下一个值 * 注意此处的 next() 方法有

87300

ES6之Iterator遍历

遍历器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。...一种数据结构只要部署了Iterator接口,我们就称之为可遍历的(iterable)。...ES6 规定,默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”(iterable...Symbol.iterator属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。...除此之外,其他数据结构(主要是对象)的 Iterator 接口,都需要自己在Symbol.iterator属性上面部署,这样才会被for...of循环遍历

51040
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    for 、foreach 、iterator 三种遍历方式的比较

    for、foreach循环、iterator迭代器都是我们常用的一种遍历方式,你可以用它来遍历任何东西:包括数组、集合等 for 惯用法: List list = new ArrayList..."ms"); 4ms 16ms 9ms 由以上得知,for()循环是最快的遍历方式,随后是iterator()迭代器,最后是foreach循环 remove操作三种遍历方式的影响 for循环的remove...= expectedModCount ,所以抛出异常 Iterator迭代器的remove 使用迭代器进行遍历还有很多需要注意的地方: 正确的遍历 List list = new ArrayList...错误的遍历 —— 使用Arrays.asList() List list = Arrays.asList("1","2","3"); Iterator it = list.iterator...也就是说,只要这段代码执行了,都会报错,抛出异常 后记: 上述文章主要介绍了 for循环、foreach 循环、iterator 迭代器遍历元素的速度大小的比较 还介绍了各自遍历过程中 对remove操作的影响

    1.9K30

    前端测试题:关于Iterator遍历器的说法,错误的是?

    考核内容:Iterator遍历器的原理 题发散度: ★★ 试题难度: ★ 解题思路: 遍历器(Iterator)为各种不同的数据结构提供统一的访问机制。...任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。...Iterator 的作用有三个:一是为各种数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员能够按某种次序排列;三是 ES6 创造了一种新的遍历命令for...of循环,Iterator...Iterator遍历过程是这样的。 (1)创建一个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本质上,就是一个指针对象。...其中,value属性是当前成员的值,done属性是一个布尔值,表示遍历是否结束。 当next( )返回对象的done属性为fasle,表示遍历未结束,done属性为true时,表示遍历结束。

    1.6K20

    Iterator 、Generator

    Iterator就是这个用途,他是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据只要不输Iterator接口,就可以完成遍历操作(依次处理该数据结构的所有成员)。...Iterator作用 为各种数据结构提供统一的、简便的访问接口 使得数据结构的成员按照某种次序排列 ES6创造了新的遍历命令for...of循环,Iterator接口主要供for...of消费 Iterator...Iterator Iterator接口的目的,就是为所有数据结构提供一种统一的访问机制。即for...of循环。当使用for...of循环遍历某种数据结构时,该循环会自动寻找Iterator接口。...数据结构只要部署了Iterator接口,我们就称这种数据结构是”可遍历的“ ES6规定,默认的Iterator接口部署在数据结构的Symbol.iterator属性,Symbol.iterator属性本身是一个函数...返回的也不是函数运行结果,而是一个指向内部状态的指针对象(遍历器对象,Iterator对象); 必须调用遍历器对象的next方法,使得指针移向下一个状态。

    59320

    Iterator 、Generator(一)

    爱是天时地利的迷信---《原来你也在这里》 接上篇Iterator 、Generator speak is cheap ~ 调用Generator函数,返回一个遍历器对象,代表Generator函数的内部指针...以后,每次调用遍历器对象的next方法,就会返回一个有着value和done表达式的值;done属性是布尔值,表示是否遍历结束。...与Iterator接口的关系 任意一个对象的Symbol.iterator方法,等于该对象的遍历器生成函数,调用该函数会返回该对象的一个遍历器对象。...Generator函数就是遍历器生成函数,因此可以把Generator赋值给对象的Symbol.iterator属性,从而使得该对象具有Iterator接口。...循环可以自动遍历Generator函数运行时生成的Iterator对象,且此时不再需要调用next方法。

    45430

    迭代器(Iterator)

    概念 interator 是一种接口机制,为各种不同的数据结构提供统一的访问机制 作用 为各种数据结构,提供一个统一的、简便的访问接口 使得数据结构的成员能够按某种次序排列 Es6创造了一种新的遍历命令...直到指向最后一个成员 每次调用next方法返回的是一个包含 value和done的对象,{value:当前成员的值,done:布尔值} value表示当前成员的值,done对应的布尔值表示当前的数据结构是否遍历结束...当遍历结束的时候返回的value值为undifined,done的值为false 简单实现 接下来我们简单实现上面的原理方便我们理解interator 如下实现对数组的迭代 这里我们利用了闭包使每次调用...false} */ 使用for...of 在Es6中已经将interator(类似上面逻辑)接口部署到指定的数据类型上,只要数据类型部署了interator就可以使用for...of循环遍历

    49820

    行为型-Iterator

    迭代器模式的原理和实现 迭代器模式(Iterator Design Pattern),也叫作游标模式(Cursor Design Pattern)。 在开篇中我们讲到,它用来遍历集合对象。...(iterator.currentItem()); iterator.next(); } } } 在上面的代码实现中,我们需要将待遍历的容器对象,通过构造函数传递给迭代器类。...待补充 遍历集合一般有三种方式:for 循环、foreach 循环、迭代器遍历。后两种本质上属于一种,都可以看作迭代器遍历。...遍历集合的同时,为什么不能增删集合元素? 在通过迭代器来遍历集合元素的同时,增加或者删除集合中的元素,有可能会导致某个元素被重复遍历遍历不到。... iterator = names.iterator(); iterator.next(); names.remove("a"); iterator.next()

    63430

    迭代器模式(Iterator)

    集合应提供一种能够遍历元素的方式,且保证它不会周而复始地访问同一个元素。 如果你的集合基于列表,那么这项工作听上去仿佛很简单。但如何遍历复杂数据结构(例如树)中的元素呢?...解决方案 迭代器模式的主要思想是将集合的遍历行为抽取为单独的迭代器对象。 除实现自身算法外,迭代器还封装了遍历操作的所有细节,例如当前位置和末尾剩余元素的数量。...结构 迭代器(Iterator)接口声明了遍历集合所需的操作:获取下一个元素、获取当前位置和重新开始迭代等。 具体迭代器(Concrete Iterators)实现遍历集合的一种特定算法。...迭代器对象必须跟踪自身遍历的进度。这使得多个迭代器可以相互独立地遍历同一集合。 集合(Collection)接口声明一个或多个方法来获取与集合兼容的迭代器。...检查客户端代码,使用迭代器替代所有集合遍历代码。每当客户端需要遍历集合元素时都会获取一个新的迭代器。

    45220

    Iterator与Generator

    定义 Iterator 就是提供一个具有 next() 方法的对象,每次调用 next() 都会返回一个结果对象,该结果对象有两个属性,value 表示当前的值,done 表示遍历是否结束。...;供 for...of 消费默认 Iterator 接口ES6 提供了 for of 语句遍历迭代器对象,我们将上述创建的迭代器使用 for of 语句遍历一下:let iterator = makeIterator...ES6 规定默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性中,如果一个数据结构存在 Symbol.iterator 属性,则该数据结构可遍历。...A: 对象(Object)之所以没有默认部署 Iterator 接口,是因为对象的哪个属性先遍历,哪个属性后遍历是不确定的。...之间的关系由于 Generator 函数就是遍历器生成函数,因此可以把 Generator 赋值给对象的 Symbol.iterator 属性,从而使得该对象具有 Iterator 接口。

    39530
    领券