【问题标题】:scala hashmap multiple valuesscala hashmap 多个值
【发布时间】:2012-06-12 21:09:20
【问题描述】:

我想用 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 中创建多值哈希表?

【问题讨论】:

    标签: scala hashmap hashtable


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 如果不导入 Set 的可变版本,这将无法工作。
      • 投票给特拉维斯。他比我快 50 秒。
      猜你喜欢
      • 2012-05-17
      • 1970-01-01
      • 2015-10-19
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2015-06-28
      相关资源
      最近更新 更多