LoginSignup
0
0

More than 5 years have passed since last update.

Elixir Sets #elixir

Posted at

Elixir Sets

概要

Elixir の Sets について

Elixir では Set behavior
Set を扱います。

ここでは、 Set を実装した HashSet を例示します

サンプル

set1 = Enum.into 2..6, HashSet.new
IO.inspect set1

# delete(set, term)
# Set1 から 3 を除去
IO.inspect "delete(set, term)"
IO.inspect Set.delete set1, 3

# difference(set1, set2)
IO.inspect "difference(set1, set2)"
set2 = Enum.into 4..8, HashSet.new
# Set1 から Set2 を除去
IO.inspect Set.difference set1, set2

# disjoint?(set1, set2)
IO.inspect "disjoint?(set1, set2)"
# 共通項があるので false
IO.inspect Set.disjoint? set1, set2
set3 = Enum.into 7..10, HashSet.new
# 共通項がないので true
IO.inspect Set.disjoint? set1, set3

# equal?(set1, set2)
IO.inspect "equal?(set1, set2)"
set4 = Enum.into 7..10, HashSet.new
IO.inspect Set.equal? set1, set4
IO.inspect Set.equal? set3, set4

# intersection(set1, set2)
IO.inspect "intersection(set1, set2)"
# 共通項のみを抽出する
# 共通項あり
IO.inspect Set.intersection set1, set2
# 共通項なし
IO.inspect Set.intersection set1, set3

# member?(hashset, term)
IO.inspect "member?(hashset, term)"
IO.inspect Set.member? set1, 2
IO.inspect Set.member? set1, 7

# put(hashset, term)
IO.inspect "put(hashset, term)"
# 新規要素の追加
IO.inspect Set.put set1, 7
# 重複要素の追加をしても内容はそのまま
IO.inspect Set.put set1, 6

# size(hashset)
IO.inspect "size(hashset)"
IO.inspect Set.size set1
set5 = Enum.into 1..10, HashSet.new
IO.inspect Set.size set5

# subset?(set1, set2)
IO.inspect "subset?(set1, set2)"
# set1 が set2 に含まれていれば真
IO.inspect Set.subset? Enum.into(2..4, HashSet.new), Enum.into(2..5, HashSet.new)
# set1 が set2 に含まれていなければ偽
IO.inspect Set.subset? Enum.into(2..5, HashSet.new), Enum.into(2..4, HashSet.new)

# union(set1, set2)
IO.inspect "union(set1, set2)"
IO.inspect Set.union Enum.into(2..4, HashSet.new), Enum.into(4..8, HashSet.new)

出力

#HashSet<[2, 6, 3, 4, 5]>
"delete(set, term)"
#HashSet<[2, 6, 4, 5]>
"difference(set1, set2)"
#HashSet<[2, 3]>
"disjoint?(set1, set2)"
false
true
"equal?(set1, set2)"
false
true
"intersection(set1, set2)"
#HashSet<[6, 4, 5]>
#HashSet<[]>
"member?(hashset, term)"
true
false
"put(hashset, term)"
#HashSet<[7, 2, 6, 3, 4, 5]>
#HashSet<[2, 6, 3, 4, 5]>
"size(hashset)"
5
10
"subset?(set1, set2)"
true
false
"union(set1, set2)"
#HashSet<[7, 6, 2, 4, 3, 5, 8]>

参照

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0