In Ruby, is a set just a hash without values?


#1

A question - is there an object in Ruby analogous to a Java set, which
has hash-like functionality but no values?

Or should I just use a hash with no values?

Actually, what I’m really trying to do is “unique-ize” an array based
on a particular attribute of each of it’s members. My plan was to read
the unique attribute values into a hash as they come up and compare new
array member’s attributes against that hash.

I bet there’s a very cool way to do it :wink: - if anyone knows and would
like to share, I am all ears.

Thanks,
Wes


#2

Wes G. wrote:

A question - is there an object in Ruby analogous to a Java set, which
has hash-like functionality but no values?

require ‘set’ # should do what you’re asking for

docs here: http://ruby-doc.org/stdlib/libdoc/set/rdoc/index.html

–Steve


#3

On Mar 29, 2006, at 2:21 AM, Wes G. wrote:

Actually, what I’m really trying to do is “unique-ize” an array
based
on a particular attribute of each of it’s members. My plan was to
read
the unique attribute values into a hash as they come up and compare
new
array member’s attributes against that hash.

I bet there’s a very cool way to do it :wink: - if anyone knows and would
like to share, I am all ears.

Use the Set class (or SortedSet if your collection needs to be sorted
and mixes in Comparable).

$ ri Set

The equality of each couple of elements is determined according to
Object#eql? and Object#hash, since Set uses Hash as storage.

– Daniel