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


Dart HashMap用法及代碼示例


dart:collection 庫中HashMap 類的用法介紹如下。

基於 hash-table 的 Map 實現。

HashMap 是無序的(不保證迭代的順序)。

HashMap 的鍵必須具有一致的 Object.==Object.hashCode 實現。這意味著 == 運算符必須在鍵上定義穩定的等價關係(自反、對稱、傳遞和隨時間一致),並且對於被 == 視為相等的對象,hashCode 必須相同。

迭代Map的鍵、值或條目(通過 forEach )可能以任何順序發生。迭代順序僅在修改Map時更改。值的迭代順序與其關聯的鍵相同,因此並行迭代 keysvalues 將提供匹配的鍵和值對。

注意:不要在Map上執行操作時修改Map(添加或刪除鍵),例如在 forEachputIfAbsent 調用期間調用的函數中,或在迭代Map時(keysvaluesentries )。

例子:

final Map<int, String> planets = HashMap(); // Is a HashMap

要將數據添加到Map,請使用 operator[]=addAlladdEntries

planets[3] = 'Earth';
planets.addAll({4: 'Mars'});
final gasGiants = {6: 'Jupiter', 5: 'Saturn'};
planets.addEntries(gasGiants.entries);
print(planets); // fx {5: Saturn, 6: Jupiter, 3: Earth, 4: Mars}

要檢查Map是否為空,請使用 isEmptyisNotEmpty 。要查找Map條目的數量,請使用 length

final isEmpty = planets.isEmpty; // false
final length = planets.length; // 4

forEach 遍曆映射的所有條目。

planets.forEach((key, value) {
  print('$key \t $value');
  // 5        Saturn
  // 4        Mars
  // 3        Earth
  // 6        Jupiter
});

要檢查Map是否有帶有特定鍵的條目,請使用 containsKey

final keyOneExists = planets.containsKey(4); // true
final keyFiveExists = planets.containsKey(1); // false

要檢查映射是否具有具有特定值的條目,請使用 containsValue

final marsExists = planets.containsValue('Mars'); // true
final venusExists = planets.containsValue('Venus'); // false

要刪除具有特定鍵的條目,請使用 remove

final removeValue = planets.remove(5);
print(removeValue); // Jupiter
print(planets); // fx {4: Mars, 3: Earth, 5: Saturn}

要根據它們的鍵和值同時刪除多個條目,請使用 removeWhere

planets.removeWhere((key, value) => key == 5);
print(planets); // fx {3: Earth, 4: Mars}

要有條件地添加或修改特定鍵的值,具體取決於是否已經存在具有該鍵的條目,請使用 putIfAbsentupdate

planets.update(4, (v) => 'Saturn');
planets.update(8, (v) => '', ifAbsent: () => 'Neptune');
planets.putIfAbsent(4, () => 'Another Saturn');
print(planets); // fx {4: Saturn, 8: Neptune, 3: Earth}

要根據現有的鍵和值更新所有鍵的值,請使用 updateAll

planets.updateAll((key, value) => 'X');
print(planets); // fx {8: X, 3: X, 4: X}

要刪除所有條目並清空Map,請使用 clear

planets.clear();
print(planets); // {}
print(planets.isEmpty); // true

也可以看看:

實現的類型

Map<K, V>

相關用法


注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 HashMap<K, V> class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。