我有一个可变的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, "_"))
有什么方法可以创建HashMap(或类似的类),以便尝试访问未定义的键会返回在创建HashMap时设置的默认值?我注意到HashMap.default仅设置为引发异常,但是我想知道是否可以更改...
最佳答案
尝试这个:
import collection.mutable.HashMap
val x = new HashMap[Int,String]() { override def default(key:Int) = "-" }
x += (1 -> "b", 2 -> "a", 3 -> "c")
然后:
scala> x(1)
res7: String = b
scala> x(2)
res8: String = a
scala> x(3)
res9: String = c
scala> x(4)
res10: String = -
关于oop - Scala:使用具有默认值的HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3648870/