セット(sets)
Dartのセット(set)は順番のないコレクションで、全ての要素がユニークでないといけません。一つのセット内に同じ値の要素があってはいけません。
sample1-1はセットリテラルでの変数定義です。
sample1-1
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'}; print(halogens); //{fluorine, chlorine, bromine, iodine, astatine}
上記サンプルで変数halogensはSet<String>型と型推定されます。このセットにString型以外の値を要素に加えようとすると実行時エラーとなります。
空のセットを作る場合(sample1-2)
(1)型引数の後に{}を記述する
(2)型注釈でSet<String>型を指定した変数に{}を代入する。
sample1-2
var names1 = <String>{}; //(1) Set<String> names2 = {}; // (2) print(names1); //{} print(names2); //{}
既存のセットに要素を追加する場合add()メソッドあるいはaddAll()メソッドを使います。
セットの要素数を取得する時はセットのlengthプロパティを使います。
sample1-3
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'}; var elements = <String>{}; //空のセットを代入 elements.add('fluorine'); //要素を一つ追加 print(elements); //{fluorine} elements.addAll(halogens); print(elements); //{fluorine, chlorine, bromine, iodine, astatine} print(elements.length); //5(要素数を取得)
セットでも、リストの時と同じようにスプレッド演算子、collection if,collection forが利用できます。(sample1-4)
sample1-4
//スプレッド演算子 var set1={1,2,3}; var set2={4,5,6}; var set3={0,...set1,...set2}; print(set3); //{0, 1, 2, 3, 4, 5, 6} //collection if var condition=true; var set4={ 0, 1, if(condition) 2 }; print(set4); //{0, 1, 2} condition=false; var set5={ 0, 1, if(condition) 2 }; print(set5); //{0, 1} //collection for var setOfInts={1,2,3,4}; var setOfStrings={ '*0', for(var i in setOfInts) '*$i' }; print(setOfStrings); //{*0, *1, *2, *3, *4}
参考
https://dart.dev/guides/language/language-tour#built-in-types
参考
https://dart.dev/guides/language/language-tour#built-in-types