📝
[Dart] Set クラスのチートシート
Dart で集合を扱う Set クラス がありますが、使用方法をよく忘れるので記事としてまとめておきます。
使用するデータ
本記事では setA
と setB
を使用します。
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