Map——Dart

简介: Map中的key和value可以使任意类型的对象。Dart中既可以使用map字面值创建map对象,也可以使用[Map](https://api.dartlang.org/stable/2.1.1/dart-core/Map-class.html)类。

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

相关文章
|
6月前
|
Dart
Dart之集合详解(List、Set、Map)
Dart之集合详解(List、Set、Map)
|
6月前
|
存储 Dart
Dart的Map类型
Dart的Map类型
|
4月前
|
Dragonfly Dart NoSQL
Dart ffi 使用问题之在Dart中调用String的toNativeUtf8方法时有什么是需要注意的
Dart ffi 使用问题之在Dart中调用String的toNativeUtf8方法时有什么是需要注意的
|
7月前
|
Dart JavaScript 安全
|
Dart
Dart之List、数组创建
Dart之List、数组创建
103 0
Dart之List、数组创建
|
Dart
Dart之Map
Dart之Map
75 0
Dart之Map
|
Dart JavaScript
Lists——Dart
在Dart中,数组是 [List](https://api.dartlang.org/stable/2.1.1/dart-core/List-class.html) 对象,所以很多人称呼它为lists。
|
Dart JavaScript 前端开发
dart list 数组详解
dart list 数组详解
270 0
|
Dart
Dart之 对象call方法
Dart之 对象call方法
218 0
Dart之 对象call方法
|
Dart
dart 类型提升
dart 类型提升
123 0