一般的にマップ(map)はkeyとvalueを関連づけるオブジェクトです。keysとvaluesはあらゆる型のオブジェクトです。一つのmapの中の全てのkeyはユニークでなければなりませんが、valueは一つのmapの中に同じvalueがあっても構いません。Dartではマップ(map)に関してmapリテラルとMapクラスをサポートしています。
比較
Listは同じ値の要素があっても問題無い。
Setの各要素はユニークでなければならない。
Mapの各keyはユニークでなければならない。
sample1-1はシンプルなマップの例です。mapリテラルを用いてmapを生成しています。
sample1-1
var gifts = { // Key: Value 'first': 'partridge', 'second': 'turtledoves', 'fifth': 'golden rings' }; var nobleGases = { 2: 'helium', 10: 'neon', 18: 'argon', };
mapクラスのコンストラクタを用いてsample1-1と同じmapを生成することもできます。(sample1-2)
sample1-2
var gifts = Map(); gifts['first'] = 'partridge'; gifts['second'] = 'turtledoves'; gifts['fifth'] = 'golden rings'; var nobleGases = Map(); nobleGases[2] = 'helium'; nobleGases[10] = 'neon'; nobleGases[18] = 'argon';
NOTE
Map();の代わりにnew Map();が頭に浮かんだ方もいると思います。Dart2ではnewキーワードは省略可能です。
JavaScriptと同じように、新しいkey-valueペアを既存のmapに追加することができます。
sample1-3
var gifts = {'first': 'partridge'}; gifts['fourth'] = 'calling birds'; //新しいkey-valueペアを追加
JavaScriptと同じ方法でmapから値(value)を取得できます。(sample1-4)
sample1-4
var gifts = {'first': 'partridge'}; assert(gifts['first'] == 'partridge');
そのmap内に存在しないkeyを用いて値を取得しようとした場合、nullが返ってきます。
sample1-5
var gifts = {'first': 'partridge'}; assert(gifts['fifth'] == null);
参考