Map——Dart
Map中的key和value可以使任意类型的对象。
Dart中既可以使用map字面值创建map对象,也可以使用Map类。
使用字面值创建Map:
var gifts = {
// Key: Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings'
};
var nobleGases = {
2: 'helium',
10: 'neon',
18: 'argon',
};
Note:Dart分析器可以推断出gifts的类型为Map<String, String>
,nobleGases的类型为Map<int, String>
。
如果你尝试添加错误的类型,分析器或者在运行时会把报错。
使用构造器创建Map
var gifts = Map();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';
var nobleGases = new Map();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';
Note: 你可能想使用new Map()
替换Map()
。在Dart2中,关键字new变成可选的了。
更多细节,参照Using constructors
给Map新增键值对
var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds'; // Add a key-value pair
print(gifts);// {first: partridge, fourth: calling birds}
从Map中获取值
var gifts = {'first': 'partridge'};
assert(gifts['first'] == 'partridge');
Map中是否包含某个key
如果不包含这个key,value会返回null。
var gifts = {'first': 'partridge'};
assert(gifts['fifth'] == null);
获取长度——使用Map#length
var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds';
assert(gifts.length == 2);
创建编译时常量的Map
在map字面值之前添加const关键字
final constantMap = const {
2: 'helium',
10: 'neon',
18: 'argon',
};
// constantMap[2] = 'Helium'; // Uncommenting this causes an error.
参考: https://www.dartlang.org/guides/language/language-tour#maps