Map<K, V>.fromIterable 构造函数
- Iterable iterable, {
- K key(
- dynamic element
- V value(
- dynamic element
根据 iterable 计算键和值创建 Map 实例。
对于 iterable 的每个元素,通过将 iterable 的元素分别应用于 key 和 value,计算键/值对。
相当于映射字面量
<K, V>{for (var v in iterable) key(v): value(v)}
字面量通常更可取,因为它允许更精确的类型。
以下示例从整数列表创建一个新的映射。映射的键是字符串形式的列表值,映射的值是列表值的平方
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}
如果没有指定 key 和 value 的值,则默认为恒等函数。在这种情况下,iterable 元素必须可以赋值给创建的映射的键或值类型。
在以下示例中,映射的键和相应的值是列表值
final numbers = <int>[1, 2, 3];
final map = Map.fromIterable(numbers);
print(map); // {1: 1, 2: 2, 3: 3}
由源 iterable 计算的键不需要是唯一的。最后一个键的实例将覆盖任何先前实例的值。
创建的映射是一个 LinkedHashMap。LinkedHashMap 需要键实现兼容的 operator==
和 hashCode
。它按键插入顺序迭代。
实现
factory Map.fromIterable(Iterable iterable,
{K key(dynamic element)?,
V value(dynamic element)?}) = LinkedHashMap<K, V>.fromIterable;