libro
www.tuyano.com
初心者のためのDart 2入門

コレクションについて (4/5)

作成:2018-03-24 09:24
更新:2018-03-24 09:24

■集合を扱う「セット」

Dartには「セット(Set)」というものもあります。これは、集合を扱うためのものです。

集合」というのは、昔、学校で習ったはずですが、プログラミング言語の機能として用意されているとなるとどういう性質かきっちり理解しておく必要がありますね。

・保管されている値に、順番がない。適当に(?)並べて扱われる。

・同じ値は2つない。すべて異なる値。既にある値を追加しても、値は増減しない。

この2つがSetの大きな特徴といえるでしょう。このSet、並び順がないので、インデックスで値を取り出したりできません。また、リストやマップのように、リテラルとして値を記述する文法も用意されていません。従って、Setを作って1つ1つ値を追加していって利用することになります。

・Setを作成する
変数 = new Set();

・値を追加する
セット . add( 値 );

・値があるかをチェック
セット . contains( 値 )

Setの値を利用する場合、もっとも多いのはfor-inによる繰り返し処理でしょう。これはリストと同様にSetも使えます。下に簡単な利用例を挙げておきます。ここでは、hello、ok、bye、helloと値をaddで追加しています。helloは2回追加していますが、実際に出力される結果を見ると1つしかないことがわかります。

また、Setは、保管している値を書き換えたりしてつかうというより、「その集合に値があるか」を調べたりするのに使うことが多いものです。あらかじめチェックする値をSetにまとめておき、「この値はSetの中にあるかな?」というのを調べて処理する、という使い方ですね。

このような場合は、containsが他用意されるでしょう。if ( ○○.contains( 値 ){~というような感じで、ifの条件にcontainsの結果を指定すれば、Setに含まれる値のときだけなにかの処理を行わせることができます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

void main() {
  var arr = new Set();
  arr.add('hello');
  arr.add('ok');
  arr.add('bye');
  arr.add('hello');
  print(arr);
  for (var i in arr) {
    print(i);
  }
}
※関連コンテンツ

「初心者のためのDart 2入門」に戻る