Dart Setから指定した数だけ値を取得する

Dart Setから指定した数だけ値を取得する

Dartで、Setから指定した数だけ値を取得するコードを記述してます。「take」の引数に取得した個数を指定して使用します。Setの要素数を超えた値を指定した場合は、全ての値が取得されます。また、開始位置を指定して値を取得するには「skip」を使用します。

環境

  • OS windows11 home
  • Dart 2.18.4

指定した数だけ値を取得

指定した数だけ値を取得するには「 take 」を使用します。

セット.take(数)

※Iterableが返ります

実際に、使用して取得してみます。

void main() {
  var s = {'aaa', 'bbb', 'ccc', 'ddd', 'eee'};

  print(s.take(2)); // (aaa, bbb)
  print(s.take(3)); // (aaa, bbb, ccc)

  print(s.take(2).runtimeType); // EfficientLengthTakeIterable<String>
}

実行結果を見ると、指定した数だけ取得されていることが確認できます。

「0」を指定すると空が、最大数を超えると全て取得されます。

void main() {
  var s = {'aaa', 'bbb', 'ccc', 'ddd', 'eee'};

  print(s.take(0)); // ()
  print(s.take(6)); // (aaa, bbb, ccc, ddd, eee)
}

空のSet

空のSetに使用すると、空の「Iterable」が返ります。

void main() {
  var s = {'aaa', 'bbb', 'ccc', 'ddd', 'eee'};

  s.clear();

  print(s.take(2)); // ()
  print(s.take(3)); // ()
}

Setに変換

Setに変換する場合は「toSet()」でSetに変換します。

void main() {
  var s = {'aaa', 'bbb', 'ccc', 'ddd', 'eee'};

  print(s.take(2).toSet()); // {aaa, bbb}
  print(s.take(3).toSet()); // {aaa, bbb, ccc}

  print(s.take(2).toSet().runtimeType); // _CompactLinkedHashSet<String>
}

開始位置を指定

開始位置を指定したい場合は「skip」を使用します。

セット.skip(開始位置)

※Iterableが返ります

実際に使用してみます。

void main() {
  var s = {'aaa', 'bbb', 'ccc', 'ddd', 'eee'};

  print(s.skip(2)); // (ccc, ddd, eee)
  print(s.skip(3)); // (ddd, eee)

  print(s.skip(2).runtimeType); // EfficientLengthSkipIterable<String>
}