1. Map.entries
- 功能: 返回
Map的所有键值对,以Iterable<MapEntry<K, V>>形式表示。 - 使用场景: 当需要遍历
Map的所有键值对时,可以使用entries来访问每个MapEntry对象,方便提取键和值。
示例:
Map<String, String> fruits = {'a': 'Apple', 'b': 'Banana'};
fruits.entries.forEach((entry) {
print('Key: ${entry.key}, Value: ${entry.value}');
});
输出:
Key: a, Value: Apple
Key: b, Value: Banana
2. Map.from
- 功能: 创建一个新的
Map,并将现有的Map内容复制过来。 - 使用场景: 当需要复制一个现有的
Map并进行修改时,可以使用Map.from。
示例:
Map<String, int> original = {'apple': 1, 'banana': 2};
Map<String, int> copy = Map.from(original);
copy['orange'] = 3; // 修改复制后的 Map
print(original); // 输出: {apple: 1, banana: 2}
print(copy); // 输出: {apple: 1, banana: 2, orange: 3}
3. Map.addAll
- 功能: 将另一个
Map的键值对添加到当前Map。 - 使用场景: 如果有两个
Map,并且希望将一个Map的内容添加到另一个Map中,可以使用addAll。
示例:
Map<String, int> map1 = {'a': 1, 'b': 2};
Map<String, int> map2 = {'c': 3, 'd': 4};
map1.addAll(map2);
print(map1); // 输出: {a: 1, b: 2, c: 3, d: 4}
4. Map.containsKey 和 Map.containsValue
- 功能: 判断
Map是否包含指定的键或值。 - 使用场景: 当需要检查一个
Map是否包含某个键或某个值时,可以使用这两个方法。
示例:
Map<String, int> map = {'apple': 1, 'banana': 2};
print(map.containsKey('apple')); // 输出: true
print(map.containsValue(3)); // 输出: false
5. Map.remove
- 功能: 移除
Map中指定键的键值对。 - 使用场景: 当需要从
Map中移除某个键值对时,使用remove。
示例:
Map<String, int> map = {'apple': 1, 'banana': 2};
map.remove('apple');
print(map); // 输出: {banana: 2}
6. Map.update
- 功能: 更新
Map中指定键的值。如果该键不存在,可以插入一个新的键值对。 - 使用场景: 如果需要根据某个键更新值,或者如果键不存在则插入新的键值对,可以使用
update。
示例:
Map<String, int> map = {'apple': 1, 'banana': 2};
map.update('apple', (value) => value + 1, ifAbsent: () => 3);
print(map); // 输出: {apple: 2, banana: 2}
7. Map.addEntries
- 功能: 将
MapEntry的集合添加到Map中。 - 使用场景: 当需要添加多个键值对时,可以通过
MapEntry批量添加。
示例:
Map<String, int> map = {'apple': 1, 'banana': 2};
map.addEntries([
MapEntry('orange', 3),
MapEntry('grape', 4),
]);
print(map); // 输出: {apple: 1, banana: 2, orange: 3, grape: 4}
8. Map.updateAll
- 功能: 更新
Map中所有元素的值。 - 使用场景: 当需要对
Map中的每个值进行某种操作时,可以使用updateAll。
示例:
Map<String, int> map = {'apple': 1, 'banana': 2};
map.updateAll((key, value) => value * 2);
print(map); // 输出: {apple: 2, banana: 4}
9. Map.forEach
- 功能: 遍历
Map中的所有键值对。 - 使用场景: 当需要遍历整个
Map并执行某些操作时,使用forEach方法。
示例:
Map<String, int> map = {'apple': 1, 'banana': 2};
map.forEach((key, value) {
print('Key: $key, Value: $value');
});
输出:
Key: apple, Value: 1
Key: banana, Value: 2
10. Map.putIfAbsent
- 功能: 如果
Map中不存在指定的键,则插入指定的键值对。 - 使用场景: 如果不确定某个键是否已经存在于
Map中,并希望在不存在的情况下插入一个默认值,可以使用putIfAbsent。
示例:
Map<String, int> map = {'apple': 1};
map.putIfAbsent('banana', () => 2);
map.putIfAbsent('apple', () => 3); // 不会替换已有的值
print(map); // 输出: {apple: 1, banana: 2}
11. Map.asMap()
- 功能: 将
List转换为Map,其中键为列表元素的索引,值为列表中的元素。 - 使用场景: 当需要将
List转换为Map时,可以使用asMap(),它会将每个列表元素的索引作为键。
示例:
List<String> list = ['apple', 'banana', 'cherry'];
Map<int, String> map = list.asMap();
map.forEach((index, value) {
print('Index: $index, Value: $value');
});
输出:
Index: 0, Value: apple
Index: 1, Value: banana
Index: 2, Value: cherry
12. Map.fromIterable
- 功能: 通过一个可迭代对象(如
List或Set)创建一个Map,可以指定键和值。 - 使用场景: 如果有一个
Iterable对象并想根据一定的规则构建一个Map,可以使用fromIterable。
示例:
List<String> list = ['apple', 'banana', 'cherry'];
Map<int, String> map = Map.fromIterable(
list,
key: (item) => list.indexOf(item), // 使用索引作为键
value: (item) => item, // 使用元素作为值
);
print(map); // 输出: {0: apple, 1: banana, 2: cherry}
总结:
entries: 用于遍历Map的键值对,适用于直接操作MapEntry。asMap(): 用于将List转换为Map,适用于需要根据索引访问列表的情况。addAll: 用于将另一个Map的内容添加到当前Map。containsKey和containsValue: 用于判断Map是否包含指定的键或值。remove: 用于移除指定键的键值对。update: 用于更新指定键的值。addEntries: 用于批量添加多个键值对。updateAll: 用于更新Map中所有值。forEach: 用于遍历整个Map。putIfAbsent: 用于插入一个不存在的键值对。fromIterable: 用于从Iterable创建一个Map。
这些方法和属性提供了多种灵活的方式来操作 Map 类型的数据。选择使用哪个方法,取决于要完成的具体任务。