提问者:小点点

scala hashmap多值


我想实现一个带有 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”。似乎这个hashmap不能有多个值。Scala中有没有简单的多值哈希表的方法?


共2个答案

匿名用户

如果您不关心保留具有相同键的值的插入顺序,则可以使用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")

匿名用户

使用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")