Forum: Ruby Set vs Hash

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
5fdb50879a9002d597566984dd5dce7a?d=identicon&s=25 SunRaySon (Guest)
on 2007-02-17 09:36
(Received via mailing list)
Are there any general guidelines on when a "Set" should be used and when
a
"Hash" should be used. Are there any limitations to "Set"

Kiran Kumar
F50f5d582d76f98686da34917531fe56?d=identicon&s=25 Peter Szinek (Guest)
on 2007-02-17 09:47
(Received via mailing list)
SunRaySon wrote:
> Are there any general guidelines on when a "Set" should be used and when a
> "Hash" should be used. Are there any limitations to "Set"

A Set is similar to an Array - the two major differences are that a Set
is unordered (because it's implementation is based on a Hash) and that a
Set contains every element only once (i.e. if you add an element which
is already there, the Set won't change).

You should use a Hash if you have a dictionary-like structure (i.e. key
=> value pairs) and a Set/Array if you have single objects. You can
think about a Set as a Hash where every value is nil - i.e. you can
represent a Set with a Hash but it makes no sense if you are not using
any values at all. In this case you should use a Set.

I hope this answers your question...

Cheers,
Peter

__
http://www.rubyrailways.com :: Ruby and Web2.0 blog
http://scrubyt.org :: Ruby web scraping framework
http://rubykitchensink.ca/ :: The indexed archive of all things Ruby
5fdb50879a9002d597566984dd5dce7a?d=identicon&s=25 SunRaySon (Guest)
on 2007-02-18 05:38
(Received via mailing list)
Thanks for your response. I think now the differences and similarities
between Set, Hash and Array are clear to me. But with respect to memory
consumption which one of among the following is better:

s = Set.new([1,2,3])
h = { 1=>nil, 2=>nil, 3=> nil}
Cd3312ac93f768b1b449af457c0fca06?d=identicon&s=25 Daniel Finnie (Guest)
on 2007-02-18 05:46
(Received via mailing list)
It should be the same as a Set is implemented as a Hash with every value
being true.  Storing true and storing nil uses the same amount of
memory.

Honestly, it doesn't matter.  Use which ever is semantically correct; if
you need to store values with the keys then use a Hash, if you don't
then use a Set.

Dan
Cb48ca5059faf7409a5ab3745a964696?d=identicon&s=25 unknown (Guest)
on 2007-02-18 07:08
(Received via mailing list)
On Sun, 18 Feb 2007, SunRaySon wrote:

> Thanks for your response. I think now the differences and similarities
> between Set, Hash and Array are clear to me. But with respect to memory
> consumption which one of among the following is better:
>
> s = Set.new([1,2,3])
> h = { 1=>nil, 2=>nil, 3=> nil}

nearly the same - set, in ruby, happens to be built on top of hash.

-a
This topic is locked and can not be replied to.