DartにおけるMapの使い方
概要
Mapとは、keyとvalueを紐づけた配列のことである。
型としては、Dartのジェネリクスを使用してMap<キー, 値>と記述する。
まず、DartでMapを使用するのにはcollectionをインポートする必要がある。
import 'dart:collection';宣言
以下にコード例を示す。
final Map<String, int> _map1 = HashMap();
final Map<String, int> _fruitMap = {
"apple": 200,
"orange": 150,
"grape": 300,
}最初にHashMapで初期化することも出来る。
そうした場合の値の追加方法は後述する。
二つ目のMapでは最初過多値を代入させている。
アクセス
値へのアクセスには、変数名[キー]でアクセスすることが出来る。
print("${_fruitMap2["apple"]}");値の操作
追加
値の追加は、新しいキーと値を一緒に設定する。
addメソッドやaddAllメソッドを使用することもできる。
_fruitMap["melon"] = 100;
_fruitMap.add = {"waterMelon": 200};
_fruitMap.addAll = {
"pine": 900,
"peach": 150,
"banana": 350,
};削除
値の削除には、removeメソッドを使用する。
変数名.remove(キー)と記述する。
_fruitMap.remove("apple");プロパティ
length
lengthプロパティはMap内のエントリ数を取得する。
int _mapLen = _fruitMap.length;isEnpty, IsNotEnpty
isEnptyはMapが空かどうかを判定する。
空ならtrue、空じゃないならfalse。
isNotEnptyはMapが空かどうかを判定する。
空じゃないならtrue、空ならfalse。
if(_fruitMap.isEnpty){}
if(_fruitMap.isNotEnpty){}keys
keysプロパティは全てのキーを取得するプロパティ。
このプロパティは、Setオブジェクトを返す。
Setとは、は一意の値のコレクションのことである。
Set<String> keys = _fruitMap.keys;
printf(keys); //キーの集合を出力values
valueプロパティは全ての値を取得するプロパティ。
このプロパティは、Iterableオブジェクトを返す。
Iterableとは、は反復処理可能な値のシーケンスのことである。
Iterable<int> values = _fruitMap.values;
printf(values); //値のイテラブルを出力イテレーター
forEach
forEachではMap内の各エントリに対して反復処理を行うことが出来る。
_fruitMap.forEach((key, value) {
print("$keyの値段は$valueです。");
})for-in
Mapには、for-in構文も使用することが出来る。
for(var key in _fluitMap.keys){
print("$keyの値段は$valueです。");
}Jsonへの変換
Json → map
import 'dart:convert';
const decoder = JsonDecoder();
final map = decoder.convert(this) as Map<String, dynamic>;
return map;Map → Json
import 'dart:convert';
const encoder = JsonEncoder();
final json = encoder.convert(this);
return json;