【问题标题】:Scala HashMap of Lists: simpler default?列表的Scala HashMap:更简单的默认值?
【发布时间】:2012-12-22 17:41:37
【问题描述】:

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

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

这样我就可以简单地写出类似的东西

lists("dog") ::= 14

不必担心“狗”列表是否已经初始化。

有没有更清洁的方法来做到这一点?我发现自己一遍又一遍地输入这五个默认覆盖行。

谢谢!

【问题讨论】:

    标签: list scala hashmap overriding default


    【解决方案1】:

    withDefaultValue() 呢?

    val lists = new mutable.HashMap[String,List[Int]].withDefaultValue(Nil)
    
    lists("dog") ::= 13
    lists("cat") ::= 14
    lists("dog") ::= 15  //(13, 15)
    

    另见

    【讨论】:

    • 太棒了!就凭票。这就是我喜欢 stackoverflow 的原因。
    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 2017-07-08
    • 2014-12-23
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多