上一篇讲了List 存储对象的方式,在Java中有很多种集合 比如List Map. 这是二大类,那么在dart语言中也有
Maps
In general, a map is an object that associates keys and values. Both keys and values can be any type of object. Each key occurs only once, but you can use the same value multiple times. Dart support for maps is provided by map literals and the Map type
翻译:
通常,map是一个关联键和值的对象。键和值都可以是任何类型的对象。每个键只出现一次,但是可以多次使用相同的值。Dart对映射的支持由映射文字和映射类型提供
例子:
var gifts = {
// Key: Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings'
};
var nobleGases = {
2: 'helium',
10: 'neon',
18: 'argon',
};
这个和JavaScript中的定义对象的很像,
上面是一种创建Map集合的方式
void main(){
var gifts = Map();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';
print(gifts);
}
这个是省略了new 操作符的写法。加上也一样
修改其他的值和list方式一样 比如:
void main(){
var gifts = new Map();
gifts['first'] = '1';
gifts['second'] = '2';
gifts['fifth'] = '3';
print(gifts);
gifts['fifth'] = '4';
print(gifts);
}
如果想让Map集合的key-vaule值是规定的数据类型
void main() {
var gifts = new Map<String, int>();
gifts['first'] = 1;
gifts['second'] = 2;
gifts['fifth'] = 3;
print(gifts);
}
如果想在map中添加一个key-vaule
void main() {
var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds'; // Add a key-value pair
print(gifts);
}
默认是添加在末尾
如果有需求是定义一个常量的也和List一样
void main() {
final constantMap = const {
2: 'helium',
10: 'neon',
18: 'argon',
};
}
这样的话 它对应的key的值就不能修改了
如果查找在Map中不存的就会返回null
void main() {
var gifts = {'first': 'partridge'};
print( gifts['fifth']);
}
获取Map中所有的key和value
void main() {
var hawaiianBeaches = {
'Oahu': ['Waikiki', 'Kailua', 'Waimanalo'],
'Big Island': ['Wailea Bay', 'Pololu Beach'],
'Kauai': ['Hanalei', 'Poipu']
};
var keys = hawaiianBeaches.keys;
print(keys);
var values = hawaiianBeaches.values;
print(values);
}
Map的遍历方式
void main() {
var hawaiianBeaches = {
'Oahu': ['Waikiki', 'Kailua', 'Waimanalo'],
'Big Island': ['Wailea Bay', 'Pololu Beach'],
'Kauai': ['Hanalei', 'Poipu']
};
hawaiianBeaches.forEach((k, v) {
print('k=$k and v= $v');
});
}