how to repeat key’s?
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:
- Create a HashMap class for Ruby, a very simple task
- 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