どうも、ちょげ(@chogetarou)です。
Mapの値を更新する方法を紹介します。
方法

Mapの値を更新する方法は、3つあります。
map[key] = newValue
1つ目は、[]を使う方法です。
まず、「map[key]」のように、[key]を使ってキーにアクセスします。
そして、map[key]に新しい値を代入します。
map[key] = newValue
[]内に指定したキーの値が、代入された値に更新されます。
使用例
void main() {
var numbers = {
'One' : 1,
'Two' : 0,
'Three' : 3,
};
//Twoの値を2に更新
numbers['Two'] = 2;
//Fourに4を代入 -> Fourが存在しないので、新しく追加
numbers['Four'] = 4;
print(numbers); //{One: 1, Two: 2, Three: 3, Four: 4}
}
updateメソッド
2つ目は、updateメソッドを使う方法です。
具体的には、Mapからupdateメソッドを呼び出します。
updateメソッドの第1引数には更新するキー、第2引数には更新後の値を返すコールバック関数を指定します。
//keyの値をnewValueに更新
map.update(key, (value) => newValue);
updateメソッドは、 第1引数のキーが存在すれば、第2引数の戻り値の値に更新します。
第1引数が存在しない場合は、何もしません。
使用例
void main() {
var numbers = {
'One' : 1,
'Two' : 0,
'Three' : 3,
};
numbers.update('Two', (value) => 2);
//値が存在しない場合は、引数「ifAbsent」の戻り値を追加
numbers.update('Four', (value) => 4, ifAbsent: () => 4);
print(numbers); //{One: 1, Two: 2, Three: 3, Four: 4}
}
updateAllメソッド
3つ目は、updateAllメソッドを使う方法です。
具体的には、MapからupdateAllメソッドを呼び出します。
updateAllメソッドの引数には、新しい値を返す関数を指定します。
map.updateAll((key, value) => newValue)
updateAllメソッドは、Map内の要素を順番に取り出していき、キーの値を関数の戻り値で更新します。
使用例
void main() {
var numbers = {
'One' : 1,
'Two' : 2,
'Three' : 3,
};
numbers.updateAll((key, value) => value * value);
print(numbers); //{One: 1, Two: 4, Three: 9}
}
まとめ
Mapで値を更新する方法は、次の3つです。
- []を使って、新しい値をキーに代入する方法
- updateメソッドで指定したキーを更新する方法
- updateAllメソッドでMap全体の値を更新する方法
コメント