【Dart】List,Set,Mapの便利な関数
List,Set,Mapの基本的な話は、【Dart】List,Set,Mapの作り方を参照してください。
すべての関数確認ではなく、便利と感じたものをピックアップし、実行結果とともに確認します。
【Dart】List,Set,Map(コレクション)の関数
はじめに
-
【参考】公式サイト
-
実行環境
-
DartPadやAndroid Studio等で実行※パッケージ利用や、実行時エラー確認はIDE
- Dart SDK 2.10.4
-
DartPadやAndroid Studio等で実行※パッケージ利用や、実行時エラー確認はIDE
-
確認の流れ
- 実行確認
- そのコレクション自体への追加・削除・変更・確認・
- 別のコレクションとする変換
- 組み合わせ
- 上記についてListに対して確認後、Set, MapについてもListと同様に確認
- Listには存在するが、Set, Mapには存在しないものや、追加されたものをメモ
- 実行確認
List
追加
-
add
関数- 要素を末尾へ追加
void main() {
final list = <String>[];
list.add('Apple');
print(list);
}
実行結果
[Apple]
-
addAll
関数- コレクション(List)の中身すべてを要素として末尾へ追加
void main() {
final list1 = ['Apple'];
final list2 = ['Strawberry', 'Peach'];
list1.addAll(list2);
print(list1);
}
実行結果
[Apple, Strawberry, Peach]
-
insert
関数- 指定した位置に要素を追加 ※指定位置にもともと存在した要素は、追加要素の後ろとなる
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
list.insert(1, 'Banana');
print(list);
}
実行結果
[Apple, Banana, Strawberry, Peach]
-
insertAll
関数- 指定した位置にコレクション(List)の中身すべてを要素として追加
void main() {
final list1 = ['Apple'];
final list2 = ['Strawberry', 'Peach'];
list1.insertAll(0, list2);
print(list1);
}
実行結果
[Strawberry, Peach, Apple]
削除
-
remove
関数- 指定した値の要素を削除 ※複数同じ値がある場合は、最初の要素のみ削除
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
list.remove('Strawberry');
print(list);
}
実行結果
[Apple, Peach]
-
removeAt
関数- 指定した位置の要素を削除
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
list.removeAt(1);
print(list);
}
実行結果
[Apple, Peach]
-
removeLast
関数- 最後の要素を削除
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
list.removeLast();
print(list);
}
実行結果
[Apple, Strawberry]
-
removeRange
関数- 指定したstart位置からend位置までの要素を削除
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
list.removeRange(1, list.length);
print(list);
}
実行結果
[Apple]
-
removeWhere
関数- 指定された条件の要素を削除
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
list.removeWhere((String value) => value.length > 5);
print(list);
}
実行結果
[Apple, Peach]
変更
-
sort
関数- 引数として渡す
compare
関数によってソート ※省略した場合は、Comparable.compareとなる
- 引数として渡す
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
list.sort((a, b) => a.length.compareTo(b.length));
print(list);
}
実行結果
[Apple, Peach, Strawberry]
-
shuffle
関数- 要素をランダムに並べ替える
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
list.shuffle();
print(list);
}
実行結果
[Apple, Peach, Strawberry]
※ランダムに出現した一例
確認
-
forEach
関数
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
list.forEach(print);
}
実行結果
Apple
Strawberry
Peach
-
elementAt
関数- 値確認
- 範囲外を指定すると、実行時エラー(RangeError )となる
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.elementAt(0));
print(list.elementAt(1));
print(list.elementAt(2));
}
実行結果
Apple
Strawberry
Peach
-
indexOf
関数- 位置確認(値による検索)
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.indexOf('Apple'));
print(list.indexOf('Strawberry'));
print(list.indexOf('Peach'));
print(list.indexOf('Banana'));
}
実行結果
0
1
2
-1
-
lastIndexOf
関数- 位置確認(値による検索)※後ろから検索
void main() {
final list = ['Apple', 'Strawberry', 'Peach', 'Apple'];
print(list.lastIndexOf('Apple'));
print(list.lastIndexOf('Apple', 0));
print(list.lastIndexOf('Strawberry', 0));
}
実行結果
3
0
-1
-
lastIndexWhere
関数- 位置確認(bool値を返す関数による検索)※後ろから検索
void main() {
final list = ['Apple', 'Strawberry', 'Peach', 'Apple'];
print(list.lastIndexWhere((item) => item == 'Apple'));
print(list.lastIndexWhere((item) => item == 'Apple', 0));
print(list.lastIfndexWhere((item) => item == 'Strawberry', 0));
print(list.lastIndexWhere((item) => item.startsWith('P')));
}
実行結果
3
0
-1
2
-
firstWhere
関数- 値確認(bool値を返す関数による検索)※最初の一致
void main() {
final list = ['Apple', 'Strawberry', 'Peach', 'Apple'];
print(list.firstWhere((item) => item == 'Apple'));
print(list.firstWhere((item) => item.startsWith('P')));
print(list.firstWhere((item) => item == 'Banana',
orElse: () => 'Banana Nothing'));
}
実行結果
Apple
Peach
Banana Nothing
-
contains
関数
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.contains('Apple'));
print(list.contains('Banana'));
}
実行結果
true
false
-
every
関数- コレクションのすべての要素が指定された条件を満たせばtrueを返す
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.every((String value) => value.length > 0));
print(list.every((String value) => value.length > 10));
}
実行結果
true
false
-
where
関数- 与えた条件を満たす要素を持つコレクションを返す
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.where((String value) => value.length > 0));
print(list.where((String value) => value.length > 10));
}
実行結果
(Apple, Strawberry, Peach)
()
変換(値として渡す用)
-
toList
/toSet
関数- 各オブジェクトとする ※以下ListにtoListを利用した場合は、中身の同じの別オブジェクトを作成
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.toList());
print(list.toSet());
}
実行結果
[Apple, Strawberry, Peach]
{Apple, Strawberry, Peach}
-
join
関数- 各要素の間に指定の文字を入れたStringを返す
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.join(','));
}
実行結果
Apple,Strawberry,Peach
-
asMap
関数- ListからMapへ
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
final map = list.asMap();
print(map);
}
実行結果
{0: Apple, 1: Strawberry, 2: Peach}
-
followedBy
関数- このList(コレクション)と別のList(コレクション)に連結させて、パラメータとして渡す
- ※
Iterable<String>
となる
void main() {
final list1 = ['Apple'];
final list2 = ['Strawberry', 'Peach'];
print(list1.followedBy(list2));
}
実行結果
(Apple, Strawberry, Peach)
-
take
関数- 指定した個数分を取得 ※
Iterable<String>
となる
- 指定した個数分を取得 ※
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.take(2));
}
実行結果
(Apple, Strawberry)
-
skip
関数- 指定した位置から取得 ※
Iterable<String>
となる
- 指定した位置から取得 ※
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.skip(2));
}
実行結果
(Peach)
-
reduce
関数- コレクションを単一の値に計算等処理を行いながら、減らす(例:intのListをint値に変更)
- ※コレクションの型に依存するため、StringのListはString値のみ
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
final String sum = list.reduce((String a, String b) => a + b);
print(sum);
}
実行結果
AppleStrawberryPeach
-
fold
関数- 初期値を与えられるreduce
- ※コレクションの型に依存しないため、IntのListをString値も可
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
final String sum = list.fold('SUM:', (String a, String b) => a + b);
print(sum);
final int sumLength =
list.fold(0, (int count, String str) => count + str.length);
print(sumLength);
}
実行結果
SUM:AppleStrawberryPeach
20
-
map
関数→toList
関数- 与えられた各要素を新しく格納する値として修正し、それらを新しいリストとする
void main() {
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.map((String value) => 'Eat:' + value).toList());
}
実行結果
[Eat:Apple, Eat:Strawberry, Eat:Peach]
-
expand
関数- 各要素に与えた処理を実施し、コレクションを返す
- 二次元配列を一次元配列に変換や、要素の中身を複製することが可能
- 各要素に与えた処理を実施し、コレクションを返す
void main() {
final wordList = [
['Apple', 'Strawberry', 'Peach', 'Cherry', 'Litchi'],
['Olympic', 'World Cup', 'Paralympic Games'],
['Pokémon', 'Doraemon', 'Dragon Ball'],
];
print(wordList.expand((List<String> values) => values).toList());
final list = ['Apple', 'Strawberry', 'Peach'];
print(list.expand((String value) => [value, value]).toList());
}
実行結果
[Apple, Strawberry, Peach, Cherry, Litchi, Olympic, World Cup, Paralympic Games, Pokémon, Doraemon, Dragon Ball]
[Apple, Apple, Strawberry, Strawberry, Peach, Peach]
組み合わせ
コードとして縦につなげていく書き方をする場合
-
関数の種類
- 検索・修正
-
where
関数やmap
関数、skip
関数、followedBy
等は複数呼び出し可能- =コレクションとして、次の関数を実行可能
-
- 値・オブジェクト作成(コレクション作成確定 or コレクション以外のオブジェクトに変換)
-
toList
/toSet
関数、every
関数、contains
関数、reduce
関数、fold
関数等は最後の末尾で一度呼び出す- =値・オブジェクトを一つに確定(最後にList/Setオブジェクトとすることや、true/false、特定の値・オブジェクトとなる)
-
- 検索・修正
-
特定の値に対して、特定の動作を行い格納する例
void main() {
final list1 = ['Apple', 'Strawberry', 'Peach'];
final list2 = list1
.where((String value) => value != 'Apple')
.map((String value) => value + value)
.toList();
print(list2);
}
実行結果
[StrawberryStrawberry, PeachPeach]
Set
追加
-
add
関数- 要素を末尾へ追加
void main() {
final set = <String>{};
set.add('Apple');
print(set);
}
実行結果
{Apple}
-
addAll
関数- コレクション(Set)の中身すべてを要素として末尾へ追加
- ※重複は最初のみ追加
void main() {
final set1 = {'Apple'};
final set2 = {'Cherry', 'Litchi', 'Apple'};
set1.addAll(set2);
print(set1);
}
実行結果
{Apple, Cherry, Litchi}
-
insert
関数- Setにはない
-
insertAll
関数- Setにはない
削除
-
remove
関数- 指定した値の要素を削除 ※複数同じ値がある場合は、最初の要素のみ削除
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
set.remove('Cherry');
print(set);
}
実行結果
{Apple, Litchi}
-
removeAt
関数- Setにはない
-
removeLast
関数- Setにはない
-
removeAll
関数- 指定したコレクションの要素を削除する
- ※以下はListの
['Cherry', 'Litchi']
でも同様結果となる
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
set.removeAll({'Cherry', 'Litchi'});
print(set);
}
実行結果
{Apple}
-
removeWhere
関数- 指定さの要素を削除
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
set.removeWhere((String value) => value.length > 5);
print(set);
}
実行結果
{Apple}
変更
-
sort
関数- Setにはない
- 【備考】似てようなことを行うためには、
SplayTreeSet
クラスを利用
import 'dart:collection';
void main() {
final SplayTreeSet<String> set =
SplayTreeSet((a, b) => a.length.compareTo(b.length));
set.add('111');
set.add('1');
set.add('11');
print(set);
}
実行結果
{1, 11, 111}
-
shuffle
関数- Setにはない
確認
-
forEach
関数
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
set.forEach(print);
}
実行結果
Apple
Cherry
Litchi
-
elementAt
関数- 値確認
- 範囲外を指定すると、実行時エラー(RangeError )となる
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.elementAt(0));
print(set.elementAt(1));
print(set.elementAt(2));
}
実行結果
Apple
Cherry
Litchi
-
indexOf
関数- Setにはない
-
lastIndexOf
関数- Setにはない
-
lastIndexWhere
関数- Setにはない
-
firstWhere
関数- 値確認(bool値を返す関数による検索)※最初の一致
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.firstWhere((item) => item == 'Apple'));
print(set.firstWhere((item) => item.startsWith('L')));
print(set.firstWhere((item) => item == 'Banana',
orElse: () => 'Banana Nothing'));
}
実行結果
Apple
Litchi
Banana Nothing
-
contains
関数
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.contains('Apple'));
print(set.contains('Banana'));
}
実行結果
true
false
-
every
関数- コレクションのすべての要素が指定された条件を満たせばtrueを返す
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.every((String value) => value.length > 0));
print(set.every((String value) => value.length > 10));
}
実行結果
true
false
-
where
関数- 与えた条件を満たす要素を持つコレクションを返す
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.where((String value) => value.length > 0));
print(set.where((String value) => value.length > 10));
}
実行結果
(Apple, Cherry, Litchi)
()
変換(値として渡す用)
-
toList
/toSet
関数- 各オブジェクトとする ※以下ListにtoListを利用した場合は、中身の同じの別オブジェクトを作成
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.toList());
print(set.toSet());
}
実行結果
[Apple, Cherry, Litchi]
{Apple, Cherry, Litchi}
-
join
関数- 各要素の間に指定の文字を入れたStringを返す
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.join(','));
}
実行結果
Apple,Cherry,Litchi
-
asMap
関数- Setにはない
-
followedBy
関数- このSet(コレクション)と別のSet(コレクション)に連結させて、パラメータとして渡す
- ※
Iterable<String>
となるため、Setとする場合は、set1.followedBy(set2).toSet()
とする
void main() {
final set1 = {'Apple'};
final set2 = {'Cherry', 'Litchi', 'Apple'};
print(set1.followedBy(set2));
}
実行結果
(Apple, Cherry, Litchi, Apple)
-
take
関数- 指定した個数分を取得
- ※
Iterable<String>
となる
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.take(2));
}
実行結果
(Apple, Cherry)
-
skip
関数- 指定した位置から取得
- ※
Iterable<String>
となる
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.skip(2));
}
実行結果
(Litchi)
-
reduce
関数- コレクションを単一の値に計算等処理を行いながら、減らす(例:intのSetをint値に変更)
- ※コレクションの型に依存するため、StringのSetはString値のみ
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
final String sum = set.reduce((String a, String b) => a + b);
print(sum);
}
実行結果
AppleCherryLitchi
-
fold
関数- 初期値を与えられるreduce
- ※コレクションの型に依存しないため、StringのSetをint値も可
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
final String sum = set.fold('SUM:', (String a, String b) => a + b);
print(sum);
final int sumLength =
set.fold(0, (int count, String str) => count + str.length);
print(sumLength);
}
実行結果
SUM:AppleCherryLitchi
17
-
map
関数→toSet
関数- 与えられた各要素を新しく格納する値として修正し、それらを新しいSetとする
void main() {
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.map((String value) => 'Eat:' + value).toSet());
}
実行結果
{Eat:Apple, Eat:Cherry, Eat:Litchi}
-
expand
関数- 各要素に与えた処理を実施し、コレクションを返す
- 二次元配列を一次元配列に変換や、要素の中身を複製することが可能
- 各要素に与えた処理を実施し、コレクションを返す
void main() {
final wordSets = {
{'Apple', 'Strawberry', 'Peach', 'Cherry', 'Litchi'},
{'Olympic', 'World Cup', 'Paralympic Games'},
{'Pokémon', 'Doraemon', 'Dragon Ball'},
};
print(wordSets.expand((Set<String> values) => values).toSet());
final set = {'Apple', 'Cherry', 'Litchi'};
print(set.expand((String value) => [value + '1', value + '2']).toSet());
}
実行結果
{Apple, Strawberry, Peach, Cherry, Litchi, Olympic, World Cup, Paralympic Games, Pokémon, Doraemon, Dragon Ball}
{Apple1, Apple2, Cherry1, Cherry2, Litchi1, Litchi2}
-
intersection
関数- このSet(コレクション)と別のSet(コレクション)の共通要素を持つSetを返す
- ※共通の要素が無い場合は空のSetを返す
void main() {
final set1 = {'Apple', 'Banana', 'Cherry'};
final set2 = {'Cherry', 'Litchi', 'Apple'};
print(set1.intersection(set2));
print(set2.intersection(set1));
}
実行結果
{Apple, Cherry}
{Cherry, Apple}
-
union
関数- このSet(コレクション)と別のSet(コレクション)のすべての要素を持つSetを返す
void main() {
final set1 = {'Apple', 'Banana', 'Cherry'};
final set2 = {'Cherry', 'Litchi', 'Apple'};
print(set1.union(set2));
print(set2.union(set1));
}
実行結果
{Apple, Banana, Cherry, Litchi}
{Cherry, Litchi, Apple, Banana}
組み合わせ
コードとして縦につなげていく書き方をする場合
-
関数の種類
- 検索・修正
-
where
関数やmap
関数、skip
関数、followedBy
等は複数呼び出し可能- =コレクションとして、次の関数を実行可能
-
- 値・オブジェクト作成(コレクション作成確定 or コレクション以外のオブジェクトに変換)
-
toList
/toSet
関数、every
関数、contains
関数、reduce
関数、fold
関数等は最後の末尾で一度呼び出す- =値・オブジェクトを一つに確定(最後にList/Setオブジェクトとすることや、true/false、特定の値・オブジェクトとなる)
-
- 検索・修正
-
特定の値に対して、特定の動作を行い格納する例
void main() {
final set1 = {'Apple', 'Cherry', 'Litchi'};
final set2 = set1
.where((String value) => value != 'Apple')
.map((String value) => value + value)
.toSet();
print(set2);
}
実行結果
{CherryCherry, LitchiLitchi}
Map
追加
-
add
関数- Mapにはない
-
addAll
関数- コレクション(Map)の中身すべてを要素として末尾へ追加
void main() {
final map1 = <int, String>{
0: 'Banana',
};
final map2 = <int, String>{
0: 'Apple',
1: 'Peach',
2: 'Litchi',
};
map1.addAll(map2);
print(map1);
}
実行結果
{0: Apple, 1: Peach, 2: Litchi}
-
addEntries
関数- MapEntry(キー/値のペア)を要素として末尾へ追加
- 以下の場合は、
Iterable<MapEntry<int, String>>
void main() {
final map1 = <int, String>{
0: 'Banana',
};
final map2 = <int, String>{
0: 'Apple',
1: 'Peach',
2: 'Litchi',
};
print(map2.entries);
map1.addEntries(map2.entries);
print(map1);
}
実行結果
(MapEntry(0: Apple), MapEntry(1: Peach), MapEntry(2: Litchi))
{0: Apple, 1: Peach, 2: Litchi}
-
insert
関数- Mapにはない
-
insertAll
関数- Mapにはない
-
putIfAbsent
関数- 指定したkeyが無い場合に、追加する
- リストに格納したkeyを利用したfor文により、実行も可能
- 指定したkeyが無い場合に、追加する
void main() {
final map = <int, String>{
0: 'Apple',
1: 'Peach',
2: 'Litchi',
};
map.putIfAbsent(0, () => 'Banana');
map.putIfAbsent(3, () => 'Banana');
print(map);
for (var key in [4, 5]) {
map.putIfAbsent(key, () => 'Strawberry');
}
print(map);
}
実行結果
{0: Apple, 1: Peach, 2: Litchi, 3: Banana}
{0: Apple, 1: Peach, 2: Litchi, 3: Banana, 4: Strawberry, 5: Strawberry}
削除
-
remove
関数- 指定したkeyの要素を削除
void main() {
final map = <int, String>{
0: 'Apple',
1: 'Peach',
2: 'Litchi',
};
map.remove(1);
print(map);
}
実行結果
{0: Apple, 2: Litchi}
-
removeAt
関数- Mapにはない
-
removeLast
関数- Mapにはない
-
removeRange
関数- Mapにはない
-
removeWhere
関数- 指定された条件の要素を削除
void main() {
final map = <int, String>{
0: 'Apple',
1: 'Peach',
2: 'Litchi',
};
map.removeWhere((int key, String value) => value.length > 5);
print(map);
}
実行結果
{0: Apple, 1: Peach}
変更
-
sort
関数- Mapにはない
- 【備考】似てようなことを行うためには、
SplayTreeMap
クラスを利用
import 'dart:collection';
void main() {
final map1 = SplayTreeMap();
final map2 = <int, String>{
2: 'Litchi',
0: 'Apple',
1: 'Peach',
};
map1.addAll(map2);
print(map1);
}
実行結果
{0: Apple, 1: Peach, 2: Litchi}{1, 11, 111}
-
shuffle
関数- Mapにはない
-
update
関数- 指定したkeyの値を変更する
- 指定したkeyが無い場合には、追加する場合は ifAbsentオプションを追加する
- ※以下では
ifAbsent: () => 'Apple'
が無いと実行時エラーとなるUnhandled Exception: Invalid argument (key): Key not in map.: 3
- 指定したkeyの値を変更する
void main() {
final map = <int, String>{
0: 'Apple',
1: 'Cherry',
2: 'Litchi',
};
map.update(0, (String value) => 'Banana');
print(map);
map.update(3, (String value) => 'Strawberry', ifAbsent: () => 'Apple');
print(map);
}
実行結果
{0: Banana, 1: Cherry, 2: Litchi}
{0: Banana, 1: Cherry, 2: Litchi, 3: Apple}
-
updateAll
関数-
update
関数をすべての要素に対して実行
-
void main() {
final map = <int, String>{
0: 'Apple',
1: 'Cherry',
2: 'Litchi',
};
map.updateAll((int key, String value) => 'Banana');
print(map);
map.updateAll((int key, String value) {
if (key.isEven) {
return 'isEven';
}
return 'isOdd';
});
print(map);
}
実行結果
{0: Banana, 1: Banana, 2: Banana}
{0: isEven, 1: isOdd, 2: isEven}
確認
-
forEach
関数
void main() {
final map = <int, String>{
0: 'Apple',
1: 'Cherry',
2: 'Litchi',
};
map.forEach((key, value) {
print('$key:$value');
});
}
実行結果
0:Apple
1:Cherry
2:Litchi
-
elementAt
関数- Mapにはない
-
indexOf
関数- Mapにはない
-
lastIndexOf
関数- Mapにはない
-
lastIndexWhere
関数- Mapにはない
-
firstWhere
関数- Mapにはない
-
contains
関数- Mapにはない(代わりに、
containsKey
とcontainsValue
)
- Mapにはない(代わりに、
-
containsKey
関数
void main() {
final map = <int, String>{
0: 'Apple',
1: 'Cherry',
2: 'Litchi',
};
print(map.containsKey(0));
print(map.containsKey(-1));
}
実行結果
true
false
-
containsValue
関数
void main() {
final map = <int, String>{
0: 'Apple',
1: 'Cherry',
2: 'Litchi',
};
print(map.containsValue('Apple'));
print(map.containsValue('Banana'));
}
実行結果
true
false
-
every
関数- Mapにはない
-
where
関数- Mapにはない
変換(値として渡す用)
-
toList
/toSet
関数- Mapにはない
-
join
関数- Mapにはない
-
asMap
関数- Mapにはない
-
followedBy
関数- Mapにはない
-
take
関数- Mapにはない
-
skip
関数- Mapにはない
-
reduce
関数- Mapにはない
-
fold
関数- Mapにはない
-
map
関数- 与えられた各要素を新しく格納する値として修正し、それらを新しいMapとする
- 関数の中ではMapEntryを渡す
- 与えられた各要素を新しく格納する値として修正し、それらを新しいMapとする
void main() {
final map = <int, String>{
0: 'Apple',
1: 'Cherry',
2: 'Litchi',
};
print(
map.map((int key, String value) => MapEntry(key + 100, value + 'Color')));
}
実行結果
{100: AppleColor, 101: CherryColor, 102: LitchiColor}
-
expand
関数- Mapにはない
組み合わせ
コードとして縦につなげていく書き方は、Mapの場合は不要な場合が多い(key/valueにより、簡単に実現可能)
Discussion