セット
セットはユニークな値を保持する入れものです。順番は保持されません。前章の HashTable-of のキーの部分はユニークな値で構成されるのでセットとなります。以下のように利用します。
let 変数:{Set-of 値の型} = {{Set-of 値の型} 引数, 引数, ...}
Set-of もまたパラメータ化クラスですので、値の型を指定する必要があります。セットに値を追加するには、insert メソッドを利用します。setの中に値があるかどうかを判定するのは、member? メソッドを使います。
{curl 7.0 applet} {curl-file-attributes character-encoding = "shift-jis"} {value let string-set:{Set-of String} = {{Set-of String}} {string-set.insert "a"} {string-set.insert "b"} {string-set.insert "c"} {string-set.member? "c"} }
実行結果は、true が表示されます。
いろいろな値を持つデータから、ユニークな値を取り出したい場合、Set-of でデータを追加していけばそれで完成です。
次のサンプルコードでは、Randomクラスの next-in-range メソッドを使って、0から10の間の整数の乱数を生成しています。乱数の生成を10回繰り返した場合、int-set にはいくつの要素が格納されているかが表示されます。実行するまでいくつになるか分かりません。9以下の数であった場合、同じ値が生成されたことが分かります。
{curl 7.0 applet} {curl-file-attributes character-encoding = "shift-jis"} {value let int-set:{Set-of int} = {{Set-of int}} let random:Random = {Random} {for i:int = 0 below 10 do {int-set.insert {random.next-in-range 0, 10}} } int-set.size }
setの中の要素を削除したい場合は、remove メソッドを使います。
{curl 7.0 applet} {curl-file-attributes character-encoding = "shift-jis"} {value let string-set:{Set-of String} = {{Set-of String} "a", "b"} {string-set.remove "b"} {string-set.member? "b"} }
実行結果は、false です。
Set-of で代表的なメソッドは以下のようになります。
プロパティ | 内容 |
---|---|
element-type | 要素の型 |
empty? | 要素が空か否か |
size | 要素の数 |
メソッド | 内容 |
---|---|
clear | 要素を全て削除する |
insert | 要素を追加する |
member? | 指定した要素がセットに含まれているか否かを返す |
remove | 要素を削除する |