Hash

how to repeat key’s?

the keys for a hash are uniq.
what do u mean by ‘repeat’?

2010/8/10 Dmitriy M. [email protected]

what do u mean by ‘repeat’?

axample in java
HashMap h=ne HashMap();
h.put(“key”,“value_1”);
h.put(“key”,“value_2”);
h.put(“key”,“value_N”);

how to made in ruby

On Tue, 10 Aug 2010 17:37:09 +0900
Dmitriy M. [email protected] wrote:

how to repeat key’s?
do you need a multivalue hash?

{key => val1, val2, val3 …}

The Ruby hash is not a Java HashMap

x[“key”] = “value_1”
x[“key”] = “value_2”

puts x[“key”] => “value_2”

The best you can do is:

  1. Create a HashMap class for Ruby, a very simple task
  2. Use lists to store the values

x[“key”] = Array.new
x[“key”] << “value_1”
x[“key”] << “value_2”

puts x[“key”] => [“value_1”, “value_2”]

On Tue, 10 Aug 2010 17:37:09 +0900
Dmitriy M. [email protected] wrote:

how to repeat key’s?

you can find an example solution in “The Ruby way.” by Hal F…

another way is to make a patch to Hash object, put ur own rules in it
and u
will have a HashMap in ruby

2010/8/10 Peter H. [email protected]

do you need a multivalue hash?
{key => val1, val2, val3 …}

Yes

On 10.08.2010 11:18, wrote Peter H.:

x[“key”] = Array.new
x[“key”] << “value_1”
x[“key”] << “value_2”

puts x[“key”] => [“value_1”, “value_2”]

Why do that?
That’s not how the given Java code behaves.

actually u just need a method to put value in and return the overwrite
value, don’t u?
so in a usual way u can write a Hash class to redefine its []= method to
acheive that

2010/8/10 Jake J. [email protected]

Dmitriy M. wrote:

do you need a multivalue hash?
{key => val1, val2, val3 …}

Yes

(1)

myhash = Hash.new { |h,k| h[k] = [] }
myhash[‘key’] << ‘val1’
myhash[‘key’] << ‘val2’
myhash[‘key’] << ‘val3’
p myhash

{“key”=>[“val1”, “val2”, “val3”]}

p myhash[‘key’]

[“val1”, “val2”, “val3”]

(2)

myhash = Hash.new { |h,k| h[k] = {} }
myhash[‘key’][‘val1’] = true
myhash[‘key’][‘val2’] = true
myhash[‘key’][‘val3’] = true
p myhash

{“key”=>{“val3”=>true, “val1”=>true, “val2”=>true}}

p myhash[‘key’].keys

[“val3”, “val1”, “val2”]

The latter has the property that duplicate values are eliminated, and
it’s very quick to test for a particular value:

if myhash[‘key’][‘val1’]
… etc
end

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs