当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Map.fromIterable用法及代码示例


dart:core 库中Map.fromIterable 的用法介绍如下。

用法:

Map<K, V>.fromIterable(
   Iterable iterable,    
   {K key(
   dynamic element   
)?,    
   V value(
   dynamic element   
)?}   
)

创建一个 Map 实例,其中的键和值是从 iterable 计算的。

对于 iterable 的每个元素,通过将 keyvalue 分别应用于可迭代的元素来计算键/值对。

相当于Map文字:

<K, V>{for (var v in iterable) key(v): value(v)}

文字通常更可取,因为它允许更精确的输入。

下面的示例从整数列表创建一个新映射。 map的键是list值转换为字符串,map的值是list值的平方:

final numbers = <int>[1, 2, 3];
final map = Map<String, int>.fromIterable(numbers,
    key: (item) => item.toString(),
    value: (item) => item * item);
print(map); // {1: 1, 2: 4, 3: 9}

如果没有为 keyvalue 指定值,则默认为恒等函数。在这种情况下,可迭代元素必须可分配给已创建映射的键或值类型。

在以下示例中,map 的键和对应的值直接是list 的值:

final numbers = <int>[1, 2, 3];
final map = Map.fromIterable(numbers);
print(map); // {1: 1, 2: 2, 3: 3}

由源 iterable 计算的键不需要是唯一的。键的最后一次出现将覆盖任何先前出现的值。

创建的Map是 LinkedHashMapLinkedHashMap 需要 key 来实现兼容的 operator==hashCode 。它以 key 插入顺序进行迭代。

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Map<K, V>.fromIterable constructor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。