Dart Set同士を結合する

  • 作成日 2022.11.20
  • 更新日 2022.11.22
  • Dart
Dart Set同士を結合する

Dartで、Set同士を結合するコードを記述してます。「followedBy」を使用します。型の違うリスト同士に使用するとエラーが発生します。戻り値は「Iterable」なので「Set」で取得する場合は、実行後に「Set」に変換します。

環境

  • OS windows11 home
  • Dart 2.18.4

Set同士を結合

Set同士を結合するには「 followedBy 」を使用します。

セット.followedBy(セット)

※Iterableが返ります

実際に、使用して結合してみます。

void main() {
  var set1 = {'aaa', 'bbb'};
  var set2 = {'ccc', 'aaa'};

  var result = set1.followedBy(set2);

  print(result); // (aaa, bbb, ccc, aaa)

  print(result.runtimeType); // EfficientLengthFollowedByIterable<String>
}

実行結果を見ると、結合されていることが確認できます。

数値同士の場合は「Iterable<int>」が返ります。

void main() {
  var set1 = {11, 22};
  var set2 = {33, 44};

  var result = set1.followedBy(set2);

  print(result); // (11, 22, 33, 44)

  print(result.runtimeType); // EfficientLengthFollowedByIterable<int>
}

型の違うものに使用するとエラーが発生します。

void main() {
  var set1 = {11, 22};
  var set2 = {'aa', 'bb'};

  var result = set1.followedBy(set2);
}

main.dart:5:32: Error: The argument type 'Set<String>' can't be assigned to the parameter type 'Iterable<int>'.
 - 'Set' is from 'dart:core'.
 - 'Iterable' is from 'dart:core'.
  var result = set1.followedBy(set2);

3つ以上のSetを連結させる場合は「followedBy」をチェーンメソッドで使用します。

void main() {
  var set1 = {11, 22};
  var set2 = {33, 44};
  var set3 = {55, 66};

  var result = set1.followedBy(set2).followedBy(set3);

  print(result); // (11, 22, 33, 44, 55, 66)

  print(result.runtimeType); // EfficientLengthFollowedByIterable<int>
}

Setに変換

Setに変換する場合は「toSet()」でSetに変換します。
※Set変換時に重複は除去されます。

void main() {
  var set1 = {'aaa', 'bbb'};
  var set2 = {'ccc', 'aaa'};

  var result = set1.followedBy(set2);

  print(result.toSet()); // {aaa, bbb, ccc}

  print(result.runtimeType); // EfficientLengthFollowedByIterable<String>
}

union

「union」を使用して結合することも可能です。

void main() {
  var set1 = {11, 22, 33};
  var set2 = {33, 44, 55};

  var result = set1.union(set2);

  print(set1.union(set2)); // {11, 22, 33, 44, 55}

  print(set2.union(set1)); // {33, 44, 55, 11, 22}
}