列表的Scala HashMap:更简单的默认值?

时间:2013-01-08 19:10:22

标签: list scala hashmap override default

我需要一个列表的HashMap。通常我会这样做:

val lists = mutable.HashMap[String,List[Int]]() { 
  override def default(key: String) = {
    val newList = List[Int]()
    this(key) = newList
    newList
  }
}

这样我就可以简单地写出像

这样的内容
lists("dog") ::= 14

无需担心"狗"列表已初始化。

有更清洁的方法吗?我发现自己一次又一次地输入这五个默认覆盖线。

谢谢!

1 个答案:

答案 0 :(得分:16)

withDefaultValue()怎么样?

val lists = new mutable.HashMap[String,List[Int]].withDefaultValue(Nil)

lists("dog") ::= 13
lists("cat") ::= 14
lists("dog") ::= 15  //(13, 15)

另见