DartにおけるMapの使い方

概要

Mapとは、keyvalueを紐づけた配列のことである。
型としては、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;