📝

[Dart] Set クラスのチートシート

2021/07/21に公開

Dart で集合を扱う Set クラス がありますが、使用方法をよく忘れるので記事としてまとめておきます。

サンプルコード | DartPad

使用するデータ

本記事では setAsetB を使用します。

const setA = <int>{1, 2, 3, 4};
const setB = <int>{3, 4, 5, 6};

Set クラスのメソッド

本記事で説明しているのは、以下の3種類のメソッドです。

  • Set.difference
    • 集合Aから、集合Bとの差分を抽出する
  • Set.intersection
    • 集合Aと集合Bの共通部分を抽出する
  • Set.union
    • 集合Aと集合Bの和集合を求める

Set.difference

setA.difference(setB);
// {1, 2}

setB.difference(setA);
// {5, 6}

Set.intersection

setA.intersection(setB);
// {3, 4}

Set.union

setA.union(setB);
// {1, 2, 3, 4, 5, 6}

ユースケース

新旧データの差分を確認する

新しいリストと古いリストの差分を抽出する際に Set を使用するケースです。

以下では、更新後に削除されたデータを removed、追加されたデータを added として抽出しています。

const oldData = <int>{1, 2, 3, 4};
const newData = <int>{3, 4, 5, 6};

final removed = oldData.difference(newData); // {1, 2}
final added = newData.difference(oldData); // {5, 6}

Discussion