セット
セットはユニークな値を保持する入れものです。順番は保持されません。前章の 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 | 要素を削除する |

