【发布时间】:2015-08-28 21:18:54
【问题描述】:
我正在尝试在 Scala 中模拟 defaultdict(list)(我已经声明了 scala.collection.mutable.HashMap)。
我现在正在尝试
val d = new HashMap[Int,ListBuffer[Int]](){ override def default(key:Int) = ListBuffer[Int]() }
然后要附加到列表中,我尝试如下:
d(integerKey) += integerValToInsertIntoList
但似乎没有任何效果,d 表现得好像它总是空的?
【问题讨论】:
-
我想通了,我想,我做了
val d= new HashMap[Int,ListBuffer[Int]](),然后在做追加时,我做了d.getOrElseUpdate(integerKey, new ListBuffer()) += integerValToInsertIntoList,但我不知道这是否是正确的方法,或者是否有更好的答案 -
我怀疑
d(integerKey) += integerValToInsertIntoList将integerKey添加到d,所以每次它都会返回一个新的空ListBuffer。 -
好吧,我假设 d(integerkey) 指的是哈希图中的列表缓冲区,因此 += 将项目附加到缓冲区中,但我想我错了
-
这似乎是一个很好的解决方案。
-
我会让这个 q 保持打开状态,以防其他人有更好的答案/想要代表点
标签: list scala hashmap defaultdict