31 oop scala hashmap data-structures
我有一个可变的HashMap,并希望像默认字典一样使用它.显而易见的方法似乎是使用getOrElse并每次提供默认值作为第二个值.然而,在我的用例中,这似乎有点不合适,因为默认值不会改变.
var x = HashMap(1 -> "b", 2 -> "a", 3 -> "c")
println(x.getOrElse(4, "_")
println(x.getOrElse(5, "_"))
// And so on...
println(x.getOrElse(10, "_"))
Run Code Online (Sandbox Code Playgroud)
有没有办法创建一个HashMap(或类似的类),以便尝试访问未定义的键返回创建HashMap时设置的默认值?我注意到HashMap.default只是设置为抛出一个异常,但我想知道这是否可以改变...
mis*_*tor 70
哇,我在这里发布最后一个答案后一年就碰巧访问了这个帖子.:-)
Scala 2.9.1.mutable.Map附带一种withDefaultValue方法.REPL会议:
scala> import collection.mutable
import collection.mutable
scala> mutable.Map[Int, String]().withDefaultValue("")
res18: scala.collection.mutable.Map[Int,String] = Map()
scala> res18(3)
res19: String = ""
Run Code Online (Sandbox Code Playgroud)
huy*_*hjl 35
试试这个:
import collection.mutable.HashMap
val x = new HashMap[Int,String]() { override def default(key:Int) = "-" }
x += (1 -> "b", 2 -> "a", 3 -> "c")
Run Code Online (Sandbox Code Playgroud)
然后:
scala> x(1)
res7: String = b
scala> x(2)
res8: String = a
scala> x(3)
res9: String = c
scala> x(4)
res10: String = -
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45962 次 |
| 最近记录: |