5

我想用 int 键和字符串值实现一个哈希表。我尝试了以下方法:

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”。这个哈希图似乎不能有多个值。有没有一种简单的方法可以在 Scala 中使用多值哈希表?

4

2 回答 2

11

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")
于 2012-06-12T21:16:42.327 回答
3

使用 MultiMap trait,获取标准的可变 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")
于 2012-06-12T21:17:39.683 回答