Julia早引きノート［16］集合

###集合(書き方例)

```ruby:note16
# 初期化時に要素を指定
set1 = Set([1,2,3,4,5,])

# 空集合で初期化
set2 = Set()

# 要素の追加(単要素)
push!(set2, 4)

# 要素の追加(複数要素)
push!(set2, 5, 6, 7)

# 要素の削除
pop!(set2, 7)

◆集合の演算
　# 和集合
　union(set1, set2)
　∪(set1, set2)
　set1 ∪ set2

　# 積集合
　intersect(set1, set2)
　∩(set1, set2)
　set1 ∩ set2

　# 差集合
　setdiff(set1, set2)

　# 対照差(symdiff)
　symdiff(set1, set2)

　# 部分集合の判定
　issubset(set1, set2)
　⊆(set1, set2)
　⊇(set1, set2)
　set1 ⊆ set2
　set1 ⊇ set2

　# 集合が等しいか判定
　issetequal(set1, set2)

◆その他の関数
　# 空かどうかの判定
　isempty(set1)
　# 要素数取得
　length(set1)
　# 空にする
　empty!(set1)

```

##解説
・**キーのみからなる要素が重複なく**格納されているコレクション。
・同じキーの要素を追加してもエラーにならないが、重複は許されないため、要素数は増えない。
・以下のように空集合を宣言すると要素がAny型となり、どんな型でも格納することができます。
　` 集合名 = Set() `
・集合の中の要素には**順序性は保証されません**。
・和集合、差集合、積集合など集合用の特別な演算を用いて、異なる集合間で共通する要素や、要素同士の差異など、関係性を比較するのに便利です。
・演算の結果、得られる値は集合です。

####①和集合(union, ∪)
2つの集合のすべての要素を取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/18b06fbe-c787-6b23-0f93-4f3737ea0182.png)
**集合の記号[∪]**も使用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/21a759c4-811d-a5c4-366b-d4c2bc49e6b6.png)
また、通常の比較演算子としても使用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/1ced84eb-6b78-956f-24a7-0b06b2e0e401.png)

####②積集合(intersect, ∩)
2つの集合間で共通に含まれる要素を取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/ae2ea089-9b6c-0662-1fc3-f946226b0c37.png)
**集合の記号[∩]**も使用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/f5482782-1856-1434-d19a-9fb0ba7a8dc8.png)
また、通常の比較演算子としても使用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/67f3b490-647e-3136-7032-fedd046f927b.png)

####③差集合(setdiff)
2つの集合の差を取得します。第一引数の集合から第二引数の集合を引いた要素を返します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/d0afe8e7-fd2f-3c97-38a6-5c06ca31f86e.png)

####④対照差(symdiff)
2つの集合のどちらか一方だけに含まれる要素を取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/379c712b-e15d-e143-0c29-f49a68ee9371.png)

####⑤部分集合(issubset, ⊆, ⊇)
issubset(A, B)は、AがBの部分集合であるかどうかを判定します。結果はtrue/falseが返ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/e9b81824-b600-fd46-d07e-09686fe053f4.png)
同様に、**部分集合の記号[⊆],[⊇]**も使用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/37713991-b253-42db-71b1-11f66afd97c4.png)
また、通常の比較演算子としても使用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/1ab9585f-d584-d2fe-0dd8-a6809b694495.png)

####⑥集合が等しいか判定(issetequal)
2つの集合が同じものであるかどうかを判定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/a786ffe1-9940-8b12-1a75-1d89dc0297de.png)

####◆その他の関数
<dl>
  <dt>isempty()</dt>
  <dd>空かどうかを判定します。true/falseを返します。</dd>
  <dt>length()</dt>
  <dd>要素数を取得します。</dd>
  <dt>empty!()</dt>
  <dd>要素を削除し、空にします。</dd>
</dl>

##もくじ
[Julia早引きノート［01］変数・定数の使い方](https://qiita.com/ttabata/items/a1ada2c0cba03672e105)
[Julia早引きノート［02］算術式、演算子](https://qiita.com/ttabata/items/90900d0914fa317f652d)
[Julia早引きノート［03］複素数]
(https://qiita.com/ttabata/items/225c77a4d71fafc3e482)
[Julia早引きノート［04］正規表現](https://qiita.com/ttabata/items/8b6e4a2b7c2ca299de03)
....
<details><summary>もくじを開く</summary><div>
[Julia早引きノート［05］if文]
(https://qiita.com/ttabata/items/4f0bcff1e32f60402dfb)
[Julia早引きノート［06］ループ処理]
(https://qiita.com/ttabata/items/2a53825101b0b75fb589)
[Julia早引きノート［07］try, catch, finally]
(https://qiita.com/ttabata/items/1d6fe990526c99b65b5f)
[Julia早引きノート［08］変数の型(Int, Float, Bool, Char, String)]
(https://qiita.com/ttabata/items/2b84a826e39bfe432b62)
[Julia早引きノート［09］関数 (1)基本編]
(https://qiita.com/ttabata/items/d9b4f2728ec0dbcc6394)
[Julia早引きノート［10］関数 (2)応用編]
(https://qiita.com/ttabata/items/462e216c43d519f1969d)
[Julia早引きノート［11］Nothing型]
(https://qiita.com/ttabata/items/0e5a6b21968d8752cf0b)
[Julia早引きノート［12］複合型(Composite Type)型]
(https://qiita.com/ttabata/items/27469216a3c33101c825)
[Julia早引きノート［13］タプル]
(https://qiita.com/ttabata/items/ebe35dbfec4efbc1c29a)
[Julia早引きノート［14］リスト(Array型一次元配列)]
(https://qiita.com/ttabata/items/7528863ccbb282e8260d)
[Julia早引きノート［15］辞書(dictionary)]
(https://qiita.com/ttabata/items/77a4f1d02b51d067bfb7)
[Julia早引きノート［16］集合]
(https://qiita.com/ttabata/items/ca8137922a785122037e)
[Julia早引きノート［17］多次元配列 (1)初期化]
(https://qiita.com/ttabata/items/01fecbd14363460a27a6)
[Julia早引きノート［18］多次元配列 (2)様々な演算や関数]
(https://qiita.com/ttabata/items/f35896a5fa005fba7fbc)
[Julia早引きノート［19］多次元配列 (3)サブ配列]
(https://qiita.com/ttabata/items/045c00406fe45270b42e)
[Julia早引きノート［20］ファイル入出力]
(https://qiita.com/ttabata/items/5a99c3998060d161ace8)
[Julia早引きノート［21］JSON、XMLファイルの入出力]
(https://qiita.com/ttabata/items/65ebec11830271f9be71)
[Julia早引きノート［22］Python関数やPythonモジュールの呼び出し]
(https://qiita.com/ttabata/items/3afc8cef40d1e98a7b17)
[Julia早引きノート［23］JuliaでのMatplotlibによるグラフ描画]
(https://qiita.com/ttabata/items/96a0e172addfac690cca)
[Julia早引きノート［24］CSVFiles(DataFrameとの連携)]
(https://qiita.com/ttabata/items/51446731a703b5aca524)
[Julia早引きノート［25］線形代数演算(ベクトル・行列計算)]
(https://qiita.com/ttabata/items/5abe14d5c510e8ca0f54)
(※引き続きコンテンツを増やしていきます)
</div></details>

##関連情報

:paperclip: Julia - 公式ページ
https://julialang.org/

:paperclip: Julia - 日本語公式ドキュメント
https://julia-doc-ja.readthedocs.io/ja/latest/index.html

:paperclip: 初めてのJuliaとインストール (Windows & Linux)
https://qiita.com/ttlabo/items/b05bb43d06239f968035

:paperclip: Julia - Mathematics
https://docs.julialang.org/en/v1/base/math/


##ご意見など

ご意見、間違い訂正などございましたらお寄せ下さい。