oop - Scala:使用具有默认值的HashMap

标签 oop data-structures scala hashmap

我有一个可变的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/

相关文章:

asp.net-mvc - 正确使用强类型部分 View 吗?

c++ - 为什么我的 vector 没有随着我对其元素所做的更改而更新?

scala - Scala 中列表列表的模式匹配

scala - 在 Delite 中编译我的第一个 DSL

python - 如何访问从 JSON 数据树派生的可能存在的元素?

scala - 如何从 shell 作为普通命令行程序运行 sbt 主类?

javascript - .map() 无法访问对象的 this.function

c++ - 基类中的数据成员出现在派生类中是否会导致内存浪费?

java - Java 是否具有类似于 C++ STL 中的多集数据结构?

algorithm - 动态前缀和