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に含まれる値のときだけなにかの処理を行わせることができます。