Ruby Set ExamplesUse the set collection. Add elements to sets and use include, merge and subset.
Set. These have only unique elements. Like a hash, a set provides fast lookups. But it stores no values (no pairs). It only stores keys.
Logical methods. Sets provide many logical methods for adding, removing and testing elements. We can use operations like subset for easy analysis.
creates a new Set with the Set.new syntax. The argument to new() is an array of two elements. We then call the add() method twice.
Duplicates: One string, "socrates", is added but already exists. The duplicate is not stored.
Size: We call the size() method on the set, which returns 3. The set has three elements because the duplicate was not retained.
Include: We finally invoke the "include" method. This returns true because the argument exists within the set.
Ruby program that uses Set
# Create new Set.
s = Set.new(["plato", "socrates"])
# Add two more elements.
# Get size.
# See if Set includes this element.
When we call "include?" on the set, a hashed lookup occurs. In large sets, this is much faster than a linear search through the elements.
Tip: In a hashed lookup, a special code is computed that indicates a position in memory.
Tip 2: This performance characteristic is also found in the hash type. A benchmark is available.Hash
Next, this program uses the merge() method and the each() iterator. With merge(), we pass in a collection and the set adds all of its elements.
Each: With each, we iterate over the elements in the set. This uses the same syntax forms available on the hash and array in Ruby.Each
Tip: This is the simplest way to loop over a set. In this example, we use the identifier n.
Ruby program that uses Set, merge, each
# Create set.
s = Set.new(["x", "y"])
# Merge in these two elements.
# Iterate the set.
s.each do |n|
# Display the element.
Subset, operators. One common operation with a set is the "subset" test. We can determine if all elements from one set are contained within another. We can use <= or the "subset?" method.
Ruby program that uses subset, operators
# Contains three elements.
set1 = Set.new [10, 20, 30]
# Is a superset of set1.
set2 = Set.new [10, 20, 30, 40, 50]
# This is true.
if set1 <= set2
# This is not evaluated to true.
if set2 <= set1
# This is true.
# ... Subset is the same as the <= operator.
A summary. A set stores just keys, not values. In this way, it is like a hash with no values. In places where no values are required, this leads to clearer code.
Set benefits. Performance with sets is good: hashed lookups make searches faster. But the greater benefit with a set is its logical methods, like subset, which simplify code.
© 2007-2020 Sam Allen. Every person is special and unique. Send bug reports to firstname.lastname@example.org.