ここではコレクションのうち集合について解説します
集合
プログラムにおける集合とは、数学における集合と同様に、複数の要素をまとめたものを指します。プログラムでは、集合を扱うためのデータ構造が用意されていることが多く、これを使うことで、要素の追加や削除、検索などの処理を行うことができます。
Set
Julia では、集合 (Set) を表すために、Set を使用します。集合とは、要素の重複のない順序付けされていないデータ構造です。
・要素が重複しない
・すでに含まれる要素を追加してもエラーにならないが、要素数は増えない。
・順序はない。
重複しないが追加してもエラーしないため、様々なデータが追加される状況下でもデータ集合をユニークに保ちたい場面で役立ちます。
Julia で集合を使うには、まず Set を使って集合を定義します。例えば、次のように定義します。
# 集合を定義する
s = Set([1, 2, 3])
上記のように、Set 関数に配列を渡して集合を定義します。定義された集合 s は、次のように表示されます。
Set([1,2,3])
集合に要素を追加するには、push!() 関数を使います。例えば、次のように追加します。
# 集合を定義する
s = Set([1, 2, 3])
# 集合に要素を追加する
push!(s, 4) #複数追加の場合はpush!(s, 4, 5, 6)等とする
実行すると、集合 s は次のようになります。
Set([1,2,3,4])
また、集合から要素を削除するには、pop!() 関数を使います。例えば、次のように削除します。
# 集合を定義する
s = Set([1, 2, 3])
# 集合から要素を削除する
pop!(s, 2) #複数削除の場合はpush!(s, 2, 3)等とする
実行すると、集合 s は次のようになります。
Set([1,3])
# 集合を定義する
s = Set([1, 2, 3])
# 集合を空にする
empty!(s)
実行すると、集合 s は次のようになります。
Set{Int64}()
初期化
s = Set() # Set{Any}()
集合の演算
集合 (Set) 同士を計算するために、演算子を使用します。以下に、各演算子の使用方法を示します。
# 集合を定義する
s1 = Set([1, 2, 3])
s2 = Set([2, 3, 4])
# 和を計算する
s3 = s1 ∪ s2 #Set([1,2,3,4])
# union(s1, s2),∪(set1, set2)も同等
# 積を計算する
s3 = s1 ∩ s2 #Set([2,3])
# intersect(s1, s2),∩(s1, s2)も同等
# 差を計算する
s3 = setdiff(s1, s2) # Set([1])
# 対照差を計算する
s3 = symdiff(s1, s2) # Set([4,1])
# 部分集合の判定
issubset(s1, s2) # false
# ⊆(s1, s2) ,⊇(s1, s2), s1 ⊆ s2, s1 ⊇ s2
# 等価の判定
issetequal(s1, s2) # false
# 空判定
isempty(s1) # false
# 要素数
length(s1) #3
For文
集合 (Set) を使った for 文は、次のように書きます。
# 集合を定義する
s = Set([1, 2, 3])
# 集合から要素を取り出す
for x in s
println(x)
end
実行すると、次のように表示されます。
1
2
3