Dart StreamクラスtoSet()メソッド

Dar言語StreamクラスtoSet()メソッドDart

Dart StreamクラスのtoSet()メソッドについてメモ書き。

toSet()はStreamから受け取ったデータをSet型に変換し格納するメソッド。
戻り値はFuture<Set<T>>型。Setには受け取った順に格納される。
似たメソッドにListに格納するtoList()がある。List型とSet型の大きな違いは、List型は重複を許し、Set型は重複を許さない。

コーディングで動作を確認。

void main() {
  final stream = () async* {
    List<int> ls = [0, 0, 1, 1, 2, 2];
    for (var i in ls) {
      yield i;
    }
  }();

  Future<Set<int>> setSt = stream.toSet();
  setSt.then((value) {
    print(value);
  });
}

実行結果。
渡した値は[0, 0, 1, 1, 2, 2]だが、重複する値は含まれていない。

{0, 1, 2}

試しにtoList()を実行してみる。

void main() {
  final stream = () async* {
    List<int> ls = [0, 0, 1, 1, 2, 2];
    for (var i in ls) {
      yield i;
    }
  }();

  Future<List<int>> setSt = stream.toList();
  setSt.then((value) {
    print(value);
  });
}

実行結果。
List型なので、重複した値が返される。

[0, 0, 1, 1, 2, 2]

コメント

タイトルとURLをコピーしました