Elixir v1.4.5 MapSet View Source
Functions that work on sets.
MapSet
is the “go to” set data structure in Elixir. A set can be constructed
using MapSet.new/0
:
iex> MapSet.new
#MapSet<[]>
A set can contain any kind of elements and elements in a set don’t have to be of the same type. By definition, sets can’t contain duplicate elements: when inserting an element in a set where it’s already present, the insertion is simply a no-op.
iex> set = MapSet.new
iex> MapSet.put(set, "foo")
#MapSet<["foo"]>
iex> set |> MapSet.put("foo") |> MapSet.put("foo")
#MapSet<["foo"]>
A MapSet
is represented internally using the %MapSet{}
struct. This struct
can be used whenever there’s a need to pattern match on something being a MapSet
:
iex> match?(%MapSet{}, MapSet.new())
true
Note that, however, the struct fields are private and must not be accessed directly; use the functions in this module to perform operations on sets.
Sets can also be constructed starting from other collection-type data
structures: for example, see MapSet.new/1
or Enum.into/2
.
Link to this section Summary
Functions
Deletes value
from set
Returns a set that is set1
without the members of set2
Checks if set1
and set2
have no members in common
Checks if two sets are equal
Returns a set containing only members that set1
and set2
have in common
Checks if set
contains value
Returns a new set
Creates a set from an enumerable
Creates a mapset from an enumerable via the transformation function
Inserts value
into set
if set
doesn’t already contain it
Returns the number of elements in set
Checks if set1
’s members are all contained in set2
Converts set
to a list
Returns a set containing all members of set1
and set2
Link to this section Types
Link to this section Functions
Deletes value
from set
.
Returns a new set which is a copy of set
but without value
.
Examples
iex> set = MapSet.new([1, 2, 3])
iex> MapSet.delete(set, 4)
#MapSet<[1, 2, 3]>
iex> MapSet.delete(set, 2)
#MapSet<[1, 3]>
Returns a set that is set1
without the members of set2
.
Examples
iex> MapSet.difference(MapSet.new([1, 2]), MapSet.new([2, 3, 4]))
#MapSet<[1]>
Checks if set1
and set2
have no members in common.
Examples
iex> MapSet.disjoint?(MapSet.new([1, 2]), MapSet.new([3, 4]))
true
iex> MapSet.disjoint?(MapSet.new([1, 2]), MapSet.new([2, 3]))
false
Checks if two sets are equal.
The comparison between elements must be done using ===
.
Examples
iex> MapSet.equal?(MapSet.new([1, 2]), MapSet.new([2, 1, 1]))
true
iex> MapSet.equal?(MapSet.new([1, 2]), MapSet.new([3, 4]))
false
Returns a set containing only members that set1
and set2
have in common.
Examples
iex> MapSet.intersection(MapSet.new([1, 2]), MapSet.new([2, 3, 4]))
#MapSet<[2]>
iex> MapSet.intersection(MapSet.new([1, 2]), MapSet.new([3, 4]))
#MapSet<[]>
Checks if set
contains value
.
Examples
iex> MapSet.member?(MapSet.new([1, 2, 3]), 2)
true
iex> MapSet.member?(MapSet.new([1, 2, 3]), 4)
false
Creates a set from an enumerable.
Examples
iex> MapSet.new([:b, :a, 3])
#MapSet<[3, :a, :b]>
iex> MapSet.new([3, 3, 3, 2, 2, 1])
#MapSet<[1, 2, 3]>
Creates a mapset from an enumerable via the transformation function.
Examples
iex> MapSet.new([1, 2, 1], fn x -> 2 * x end)
#MapSet<[2, 4]>
Inserts value
into set
if set
doesn’t already contain it.
Examples
iex> MapSet.put(MapSet.new([1, 2, 3]), 3)
#MapSet<[1, 2, 3]>
iex> MapSet.put(MapSet.new([1, 2, 3]), 4)
#MapSet<[1, 2, 3, 4]>
Checks if set1
’s members are all contained in set2
.
This function checks if set1
is a subset of set2
.
Examples
iex> MapSet.subset?(MapSet.new([1, 2]), MapSet.new([1, 2, 3]))
true
iex> MapSet.subset?(MapSet.new([1, 2, 3]), MapSet.new([1, 2]))
false
Returns a set containing all members of set1
and set2
.
Examples
iex> MapSet.union(MapSet.new([1, 2]), MapSet.new([2, 3, 4]))
#MapSet<[1, 2, 3, 4]>