2019/12/19 Dart セット(sets)

セット(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

コメントを残す

メールアドレスが公開されることはありません。