一日一钱,千日一千。绳锯木断,水滴石穿。

Map——Dart

Posted on By TinyVampirePudge

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