Ein Set ist eine Sammlung von Elementen mit den folgenden Eigenschaften:
Du erstellst sie mit dem Konstruktor Set() und übergibst einen beliebigen Iterator als Parameter.
julia> s1 = Set(1:4)
Set{Int64} with 4 elements:
4
2
3
1
Neue Elemente fügst du mit push!() hinzu (genauso wie bei Arrays) und entfernst sie mit 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
Wie bei einigen anderen Sammlungstypen überprüfst du die Zugehörigkeit mit dem Operator in oder ∈ (gib \in ein und drücke dann Tab für das Symbol).
julia> 3 ∈ s1
true
Die folgenden Operationen auf Paaren von Sets werden unterstützt (die Tastenkürzel für das Operatorsymbol stehen in Klammern).
union(A, B) oder A ∪ B (\cup): alle Einträge, die in A oder B oder in beiden enthalten sind.intersect(A, B) oder A ∩ B (\cap): alle Einträge, die sowohl in A als auch in B vorkommen.setdiff(A, B) (kein Symbol): Einträge, die in A, aber nicht in B enthalten sind.symdiff(A, B) (kein Symbol): Einträge, die in A oder B, aber nicht in beiden enthalten sind.issubset(A, B) oder A ⊆ B (\subseteq) oder B ⊇ A (\supseteq): true, wenn alle Einträge von A auch in B enthalten sind.issetequal(A, B) (kein Symbol): true, wenn A und B genau dieselben Einträge enthalten.isdisjoint(A, B) (kein Symbol): true, wenn A und B keine gemeinsamen Einträge haben (die Schnittmenge also leer ist).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
Von vielen dieser Funktionen gibt es auch mutierende Varianten, bei denen dem Funktionsnamen ein ! angehängt wird. Eine vollständige Liste der Funktionen findest du im Handbuch.