當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。