2012-06-12 11 views
5

私はScalaには新しく、intキーと文字列値を持つ単純なハッシュテーブルを実装したいと考えています。スカラハッシュマップ複数の値

Iは、次のコードを試みた:test_mapの値(10) "prog_1"、 "prog_8" ではないが、それは単に "prog_8" である

import scala.collection.mutable.HashMap 
val test_map = new HashMap[Int, String] 
test_map += 10 -> "prog_1" 
test_map += 20 -> "prog_2" 
test_map += 25 -> "prog_3" 
test_map += 15 -> "prog_4" 
test_map += 10 -> "prog_8" 

を。このハッシュマップは複数の値を持つことのできない単なるキー値関数であるようです。 Scalaに複数値のハッシュテーブルを持たせる簡単な方法はありますか?

答えて

10

あなたは同じキーで値の挿入順序を維持を気にしない場合は、MultiMapを使用することができます。

import scala.collection.mutable.{ HashMap, MultiMap, Set } 

val test = new HashMap[Int, Set[String]] with MultiMap[Int, String] 

test.addBinding(10, "prog_1") 
test.addBinding(20, "prog_2") 
test.addBinding(25, "prog_3") 
test.addBinding(15, "prog_4") 
test.addBinding(10, "prog_8") 
3

標準可変HashMapを取り、いくつかの便利でそれを強化するために、マルチマップの特性を使用します

import scala.collection.mutable.HashMap 
import scala.collection.mutable.MultiMap  
import scala.collection.mutable.Set 

val test_map = new HashMap[Int, Set[String]] with MultiMap[Int, String] 
test_map.addBinding(10 ,"prog_1") 
test_map.addBinding(20 ,"prog_2") 
test_map.addBinding(25 ,"prog_3") 
test_map.addBinding(15 ,"prog_4") 
test_map.addBinding(10 ,"prog_8") 
+0

これは、変更可能なバージョンの 'Set'をインポートしなければ動作しません。 –

+0

トラヴィスに投票してください。彼は50秒で私を打ち負かす。 –