📜

【Dart】List,Set,Mapの便利な関数

2020/12/28に公開

List,Set,Mapの基本的な話は、【Dart】List,Set,Mapの作り方を参照してください。

すべての関数確認ではなく、便利と感じたものをピックアップし、実行結果とともに確認します。

【Dart】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文により、実行も可能
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
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にはない(代わりに、containsKeycontainsValue
  • 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を渡す
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