精华内容
下载资源
问答
  • Iterable
    2019-04-26 03:13:33

    Iterable可迭代对象

    代码如下:

    public interface Iterable<T> {
        
        Iterator<T> iterator();
    
        default void forEach(Consumer<? super T> action) {
            Objects.requireNonNull(action);
            for (T t : this) {
                action.accept(t);
            }
        }
        
        default Spliterator<T> spliterator() {
            return Spliterators.spliteratorUnknownSize(iterator(), 0);
        }
    }
    复制代码
    • Iterable为泛型接口,是所有可迭代对象的原始父类。

    • 唯一的抽象方法iterator(),获得一个迭代器。

    • 两个默认实现的方法forEach(Consumer<? super T> action)spliterator()

    转载于:https://juejin.im/post/5cc274f4e51d456e3428c164

    更多相关内容
  • 检查Iterable是否为空 比Array.from(iterable).length效率更高,因为它仅迭代第一项,这对于动态迭代器可能会产生很大的影响,例如Generator执行昂贵的操作。 安装 $ npm install is-empty-iterable 用法 import ...
  • 在本文中小编给大家分享了关于Java中Iterable与Iterator的用法知识点内容,有兴趣的朋友们可以学习下。
  • 下面小编就为大家带来一篇java集合_浅谈Iterable和Iterator的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Scrapy爬虫之解决“‘Rule’ object is not iterable” Scrapy爬虫出现“‘Rule’ object is not iterable”时,意思是rule规定的正则表达式无法迭代,无法进一步爬取到所规定的页面,现有以下几种解决方式供参考。 ...
  • Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法 TypeError: ‘NoneType’ object is not iterable 这个错误提示一般发生在将None赋给多个值时。 def myprocess(): a == b if a != b: ...
  • 主要介绍了Python迭代器Iterable判断方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本函数是迭代对象iterable进行比较,找出最大值返回。当key参数不为空时,就以key的函数对象为判断的标准。 例子: #max() array1 = range(10) array2 = range(0, 20, 3) print('max(array1)=', max(array1)) print...
  • iterable

    2020-12-04 04:45:13
    为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。具有iterable类型的集合可以通过新的for ... of循环来遍历。for ... of循环是ES6引入的新的语法,请测试你的浏览器是否支持...

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。

    具有iterable类型的集合可以通过新的for ... of循环来遍历。

    for ... of循环是ES6引入的新的语法,请测试你的浏览器是否支持:

    'use strict';

    var a = [1, 2, 3];

    for (var x of a) {

    }

    console.log('你的浏览器支持for ... of');

    ----

    // 请直接运行测试

    用for ... of循环遍历集合,用法如下:

    var a = ['A', 'B', 'C'];

    var s = new Set(['A', 'B', 'C']);

    var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);

    for (var x of a) { // 遍历Array

    console.log(x);

    }

    for (var x of s) { // 遍历Set

    console.log(x);

    }

    for (var x of m) { // 遍历Map

    console.log(x[0] + '=' + x[1]);

    }

    你可能会有疑问,for ... of循环和for ... in循环有何区别?

    for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。

    当我们手动给Array对象添加了额外的属性后,for ... in循环将带来意想不到的意外效果:

    var a = ['A', 'B', 'C'];

    a.name = 'Hello';

    for (var x in a) {

    console.log(x); // '0', '1', '2', 'name'

    }

    for ... in循环将把name包括在内,但Array的length属性却不包括在内。

    for ... of循环则完全修复了这些问题,它只循环集合本身的元素:

    var a = ['A', 'B', 'C'];

    a.name = 'Hello';

    for (var x of a) {

    console.log(x); // 'A', 'B', 'C'

    }

    这就是为什么要引入新的for ... of循环。

    然而,更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。以Array为例:

    'use strict';

    var a = ['A', 'B', 'C'];

    ----

    a.forEach(function (element, index, array) {

    // element: 指向当前元素的值

    // index: 指向当前索引

    // array: 指向Array对象本身

    console.log(element + ', index = ' + index);

    });

    注意,forEach()方法是ES5.1标准引入的,你需要测试浏览器是否支持。

    Set与Array类似,但Set没有索引,因此回调函数的前两个参数都是元素本身:

    var s = new Set(['A', 'B', 'C']);

    s.forEach(function (element, sameElement, set) {

    console.log(element);

    });

    Map的回调函数参数依次为value、key和map本身:

    var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);

    m.forEach(function (value, key, map) {

    console.log(value);

    });

    如果对某些参数不感兴趣,由于JavaScript的函数调用不要求参数必须一致,因此可以忽略它们。例如,只需要获得Array的element:

    var a = ['A', 'B', 'C'];

    a.forEach(function (element) {

    console.log(element);

    });

    展开全文
  • 在Python中可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)这几个概念是经常用到的,初学时对这几个概念也是经常混淆,现在是时候把这几个概念搞清楚了。 0x00 可迭代(Iterable) 简单的说,一个对象(在...
  • 文章目录Iterable源码分析(一)简介(二)源码分析 Iterable源码分析 (一)简介 Iterable是从jdk1.5就存在的接口,称为内部迭代器,常用作容器类的接口,以支持遍历操作(同时支持流式遍历) 内部迭代器的特点是...
  • 学习《Python数据分析基础》第3章最后一个例子:为每个工作簿和工作表计算总数和均值时,在pandas 实现这个例子中的data 处...TypeError, ‘int’ object is not iterable 原创文章 36获赞 28访问量 4万+ 关注 私信
  • Python中 list,truple,str,dict这些都可以被迭代,但他们并...判断是不是可以迭代,用Iterable from collections import Iterable isinstance({}, Iterable) --> True isinstance((), Iterable) --> True is
  • Iterable和Iterator的关系

    2020-12-20 22:27:09
    Iterator和Iterable 学习任何类和文档最标准的解释当然还是从jdk API里面学习,因为这个是最准确不过的东西了。想看API文档 Iterable java.lang包中 并且Collection继承了Iterable接口。 原创文章 3获赞 10访问量 ...
  • 主要介绍了JavaScript之iterable,遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型
  • 返回iterable的第一项。 安装 npm install --save first-of-iterable 用法 const firstOfIterable = require ( 'first-of-iterable' ) console . log ( firstOfIterable ( [ ] ) ) //=> undefined console . log ( ...
  • 可重复的 打字稿可迭代
  • ▩Dart-Iterable

    千次阅读 2022-01-24 00:38:48
    本文是自己翻译的,来源:Iterable<E> class Iterable<E> class (Null safety) 可以按顺序访问的值或“元素”的集合。 一、概述 通过使用iterator getter获取Iterator,并使用它逐步遍历值,达到访问...

    本文是自己翻译的,来源:Iterable<E> class

    Iterable<E> class (Null safety)
    可以按顺序访问的值或“元素”的集合。

    一、概述

    通过使用iterator getter获取Iterator,并使用它逐步遍历值,达到访问iterable的元素的目的。使用迭代器单步执行是通过调用iterator.moveNext,如果调用返回true,则迭代器现在已移动到下一个元素,该元素随后可用作迭代器。现在的如果调用返回false,则没有更多元素。Iterator.current只能在最近调用iterator.moveNext返回true时使用。如果在首次调用iterator.moveNext或当调用返回false时,读取Iterator.current会抛出错误或返回任意值。

    可以从同一个Iterable创建多个iterator。每次读取iterator时,它都会返回一个新的迭代器,可以独立地遍历不同的迭代器,每个迭代器都允许访问iterable的所有元素。相同iterable的iterators应该以相同的顺序提供相同的值(除非在迭代之间修改了基础集合,这是某些集合允许的)。

    你还可以使用for-in-loop构造对Iterable的元素进行迭代,该构造在后台使用iterator getter。例如,你可以迭代Map的所有键,因为映射键是可迭代的。

    var kidsBooks = {'Matilda': 'Roald Dahl',
                     'Green Eggs and Ham': 'Dr Seuss',
                     'Where the Wild Things Are': 'Maurice Sendak'};
    for (var book in kidsBooks.keys) {
      print('$book was written by ${kidsBooks[book]}');
    }
    

    List类和Set类都是Iterable,dart:collection库中的大多数类也是如此。

    可以修改某些Iterable集合。向List或Set中添加元素将更改其包含的元素,向Map添加新键将更改Map.keys的元素。更改后创建的迭代器将提供新元素,并且可能保留或不保留现有元素的顺序(例如,当添加单个元素时,HashSet可能会完全更改其顺序)。

    通常不允许在迭代集合时对其进行更改。这样做将中断迭代,这通常在下次调用Iterator.moveNext时抛出ConcurrentModificationErrorIterator.current getter的当前值不应受到集合中的更改的影响,当前值是由上一次调用Iterator.moveNext设置的。

    有些iterables每次迭代时都会动态计算它们的元素,就像Iterable.generate返回的元素或sync* generator函数返回的iterable。如果计算不依赖于可能更改的其他对象,那么每次迭代生成的序列都应该是相同的。

    Iterable的成员,而不是iterator本身,通过查看iterable的元素来工作。这可以通过贯穿iterator来实现,但是有些类可能有更有效的方法来查找结果(比如List中的lastlength,或者Set中的contains)。

    返回另一个Iterable的方法(如mapwhere)都是惰性的——它们将在每次迭代返回的Iterable时(根据需要)迭代原始的Iterable,而不是在迭代之前。

    由于iterable可能被多次迭代,因此不建议在迭代器中具有可检测的副作用。对于像mapwhere这样的方法,返回的iterable将在每次迭代中执行参数函数(谓词函数),因此这些函数也不应该有副作用。

    二、子类

    DoubleLinkedQueue,IterableBase,IterableMixin,LinkedList,List,ListQueue,Queue,Runes,Set

    三、可用的扩展

    EnumByName

    四、构造函数

    Iterable()
    const
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    Iterable.empty()
    Creates an empty iterable. […]
    const
    factory
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    Iterable.generate(int count, [E generator(int index)?])
    Creates an Iterable which generates its elements dynamically. […]
    factory

    五、成员属性

    first → E
    Returns the first element. […]
    read-only
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    hashCode → int
    The hash code for this object. […]
    read-only, inherited
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    isEmpty → bool
    Whether this collection has no elements. […]
    read-only
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    isNotEmpty → bool
    Whether this collection has at least one element. […]
    read-only
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    iterator → Iterator<E>
    Returns a new Iterator that allows iterating the elements of this Iterable. […]
    read-only
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    last → E
    Returns the last element. […]
    read-only
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    length → int
    Returns the number of elements in this. […]
    read-only
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    runtimeType → Type
    A representation of the runtime type of the object.
    read-only, inherited
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    single → E
    Checks that this iterable has only one element, and returns that element. […]
    read-only

    六、方法

    any(bool test(E element)) → bool
    Checks whether any element of this iterable satisfies test. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    cast<R>() → Iterable<R>
    Provides a view of this iterable as an iterable of R instances. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    contains(Object? element) → bool
    Whether the collection contains an element equal to element. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    elementAt(int index) → E
    Returns the indexth element. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    every(bool test(E element)) → bool
    Checks whether every element of this iterable satisfies test. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    expand<T>(Iterable<T> toElements(E element)) → Iterable<T>
    Expands each element of this Iterable into zero or more elements. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    firstWhere(bool test(E element), {E orElse()?}) → E
    Returns the first element that satisfies the given predicate test. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    fold<T>(T initialValue, T combine(T previousValue, E element)) → T
    Reduces a collection to a single value by iteratively combining each element of the collection with an existing value […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    followedBy(Iterable<E> other) → Iterable<E>
    Returns the lazy concatenation of this iterable and other. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    forEach(void action(E element)) → void
    Invokes action on each element of this iterable in iteration order.
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    join([String separator = ""]) → String
    Converts each element to a String and concatenates the strings. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    lastWhere(bool test(E element), {E orElse()?}) → E
    Returns the last element that satisfies the given predicate test. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    map<T>(T toElement(E e)) → Iterable<T>
    The current elements of this iterable modified by toElement. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    noSuchMethod(Invocation invocation) → dynamic
    Invoked when a non-existent method or property is accessed. […]
    inherited
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    reduce(E combine(E value, E element)) → E
    Reduces a collection to a single value by iteratively combining elements of the collection using the provided function. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    singleWhere(bool test(E element), {E orElse()?}) → E
    Returns the single element that satisfies test. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    skip(int count) → Iterable<E>
    Returns an Iterable that provides all but the first count elements. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    skipWhile(bool test(E value)) → Iterable<E>
    Returns an Iterable that skips leading elements while test is satisfied. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    take(int count) → Iterable<E>
    Returns a lazy iterable of the count first elements of this iterable. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    takeWhile(bool test(E value)) → Iterable<E>
    Returns a lazy iterable of the leading elements satisfying test. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    toList({bool growable = true}) → List<E>
    Creates a List containing the elements of this Iterable. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    toSet() → Set<E>
    Creates a Set containing the same elements as this iterable. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    toString() → String
    Returns a string representation of (some of) the elements of this. […]
    override
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    where(bool test(E element)) → Iterable<E>
    Returns a new lazy Iterable with all elements that satisfy the predicate test. […]
    ․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…․‥…
    whereType<T>() → Iterable<T>
    Returns a new lazy Iterable with all elements that have type T. […]

    七、运算符

    operator ==(Object other) → bool
    The equality operator. […]
    inherited

    八、静态方法

    castFrom<S, T>(Iterable<S> source) → Iterable<T>
    Adapts source to be an Iterable<T>. […]

    展开全文
  • iterable类型

    2021-10-10 12:34:20
    一、iterable类型的数据 1、什么是iterable类型的数据 一个数据的数据结构中有Symble.iterator属性的数据被称为itarable类型的数据或者可遍历的数据 2、iterable类型的数据可以使用for…of遍历 3、iterable类型的...

    一、iterable类型的数据
    1、什么是iterable类型的数据
    一个数据的数据结构中有Symble.iterator属性的数据被称为itarable类型的数据或者可遍历的数据
    2、iterable类型的数据可以使用for...of遍历
    3、iterable类型的数据结构有哪些
    StringArraySetMap函数的arguments对象Bom的NodeList对象
    二、iterator接口(遍历器接口)
    1、iterator(遍历器)
    2、iterator是一种接口,为各种不同的数据结构提供统一的访问机制。
    3、iterator的作用:
    (1)、为各种数据结构,提供一个统一的、简单的访问接口;
    (2)、使得数据结构的成员能够按照某种次序排列;
    (3)、iterator接口主要供for…of使用
    4、iterator的遍历过程:
    (1)、创建一个指针对象,指向当前数据结构的起始位置。遍历器对象的本质就是一个指针对象
    (2)、第一次调用指针对象的next()方法,指针指向数据结构的第一个成员
    (3)、第二次调用指针对象的next()方法,指针指向数据结构的第二个成员
    (4)、不断调用指针对象的next()方法,直到它指向数据结构的结束位置
    每一次调用next()方法,都会返回数据结构的当前成员的信息。具体来说,就是返回一个包含valuedone两个属性的对象,value是当前成员的值,done是一个布尔值,为true的时候表示遍历结束

    // 声明一个Set类型的数据结构
    let set = new Set(['a','b','c'])
    // set[Symbol.iterator]表示生成一个遍历器的函数,调用它得到遍历器对象,也叫指针对象,将它赋值给变量i,指向set中成员的起始位置
    let i = set[Symbol.iterator]()
    // i第一次调用next()方法,i指向set的第一个成员
    console.log(i.next());//{ value: 'a', done: false }
    // i第二次调用next()方法,i指向set的第二个成员
    console.log(i.next());//{ value: 'b', done: false }
    // i第三次调用next()方法,i指向set的第三个成员
    // i不断调用next()方法,指导i指向set中成员的结束位置
    console.log(i.next());//{ value: 'b', done: false }
    // i调用next()方法,返回一个包含value和done属性的对象,value代表当前成员的值,done表示遍历是否结束,done为true的时候表示
    console.log(i.next());//{ value: undefined, done: true }
    

    三、for…of
    for…of循环内部调用的是数据结构的Symbol.iterator方法。也就是说,itarable类型的数据可以使用for…of遍历它的成员

    let  str = 'hello'
    for(let i of str){
        console.log(i);
    }
    //'h' 'e' 'l' 'l' 'o'
    
    展开全文
  • ES6 iterable类型

    2020-12-16 14:11:26
    ES6 iterable类型 iterable 是 ES6 标准引入的新类型,Array、Set 和 Map 都属于 iterable 类型 Array:数组,有序的元素序列,用于在单个的变量中存储多个值 Set:ES6 中新增的数据结构,类似于数组,区别在于 Set...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 160,069
精华内容 64,027
关键字:

iterable

友情链接: Occam1DCSEM_v3.13.zip