HomeSearch | ## 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. | ||

## This examplecreates 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.
| Ruby program that uses Set
require "set"
# Create new Set.
s = Set.new(["plato", "socrates"])
# Add two more elements.
s.add("cebes")
s.add("socrates")
# Get size.
puts s.size()
# See if Set includes this element.
puts s.include?("socrates")
Output
3
true | |

## Hashing.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.
| ||

## Merge, each.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.
| Ruby program that uses Set, merge, each
require "set"
# Create set.
s = Set.new(["x", "y"])
# Merge in these two elements.
s.merge(["y", "z"])
# Iterate the set.
s.each do |n|
# Display the element.
puts n
end
Output
x
y
z | |

## 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
require "set"
# 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
puts true
end
# This is not evaluated to true.
if set2 <= set1
puts false
end
# This is true.
# ... Subset is the same as the <= operator.
if set1.subset?(set2)
puts true
end
Output
true
true | |

## A summary.A set stores just keys, not values. In this way, it is like a hash with no values. In program contexts 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. | ||

Home Dot Net Perls | © 2007-2019 Sam Allen. All rights reserved. Written by Sam Allen, info@dotnetperls.com. |