2012-06-12 81 views
5

我是新來的斯卡拉,我想實現一個簡單的哈希表,它具有int鍵和字符串值。斯卡拉hashmap多個值

我嘗試以下的代碼:

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" 

然而test_map(10)的值不是 「prog_1」, 「prog_8」 它只是 「prog_8」。看來這個hashmap只是一個關鍵的值函數,它不能有多個值。是否有一種簡單的方法在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

使用Multimap之特點,採取的標準可變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秒。 –