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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。