Setは、次のような性質を持つ要素の集まりです。
Set()コンストラクターで作成します。入力には任意のイテレーターを使えます。
julia> s1 = Set(1:4)
Set{Int64} with 4 elements:
4
2
3
1
新しい要素はpush!()で追加し(配列と同じです)、delete!()で削除します。
julia> push!(s1, 5)
Set{Int64} with 5 elements:
5
4
2
3
1
# Duplicates are ignored
julia> push!(s1, 3)
Set{Int64} with 5 elements:
5
4
2
3
1
julia> delete!(s1, 5)
Set{Int64} with 4 elements:
4
2
3
1
julia> length(s1) # length counts entries, despite the non-sequential type
4
他のいくつかのコレクション型と同じように、inまたは∈演算子で要素が含まれているかを確認できます(記号は\inと入力してからTabキーを押します)。
julia> 3 ∈ s1
true
2つのSetのペアには、次の演算が使えます(演算子記号のショートカットは括弧内に示しています)。
union(A, B)またはA ∪ B(\cup): AまたはB、あるいはその両方にあるすべての要素。intersect(A, B)またはA ∩ B(\cap): AとBの両方に共通するすべての要素。setdiff(A, B)(記号なし): AにあってBにない要素。symdiff(A, B)(記号なし): AまたはBのどちらか一方だけにある要素。issubset(A, B)またはA ⊆ B(\subseteq)、B ⊇ A(\supseteq): Aのすべての要素がBにもあるときtrue。issetequal(A, B)(記号なし): AとBがまったく同じ要素を含むときtrue。isdisjoint(A, B)(記号なし): AとBに共通する要素がないとき(つまり積集合が空のとき)true。s1 = Set(1:4)
s2 = Set(3:6)
julia> s1 ∪ s2 # union
Set{Int64} with 6 elements:
5
4
6
2
3
1
julia> s1 ∩ s2 # intersect
Set{Int64} with 2 elements:
4
3
julia> setdiff(s1, s2)
Set{Int64} with 2 elements:
2
1
julia> symdiff(s1, s2)
Set{Int64} with 4 elements:
5
6
2
1
julia> s1 ⊇ s2 # issubset
false
これらの多くには、関数名に!を付けた破壊的バージョンもあります。関数の完全な一覧はマニュアルを参照してください。