示例代码计算给定输入文件中每个单词的出现位置:
object Main {
def main(args: Array[String]) {
val counts = new scala.collection.mutable.HashMap[String, Int]
val in = new Scanner(new File("input.txt"))
while (in.hasNext()) {
val s: String = in.next()
counts(s) = counts.getOrElse(s, 0) + 1 // Here!
}
print(counts)
}
}
可以使用getOrElseUpdate
方法重写带注释行的高亮显示吗?
P.S。我只是在#34;斯卡拉的第四部分,因为不耐烦的#34;所以请不要告诉我关于功能性Scala的信息,我相信在这里可以更加美丽。
感谢。
答案 0 :(得分:0)
如果你看doc,你会看到下一个:
如果给定的密钥已在此地图中,将返回关联的值。 否则,计算来自给定表达式op的值,使用key存储 映射并返回该值。
,但无论如何你需要修改地图,所以getOrElseUpdate
在这里没用。
您可以定义default
值,如果键不存在,则会返回该值。并在下一个方式使用它:
import scala.collection.mutable.HashMap
object Main {
def main(args: Array[String]) {
val counts = HashMap[String, Int]().withDefaultValue(0)
val in = new Scanner(new File("input.txt"))
while (in.hasNext()) {
val s: String = in.next()
counts(s) += 1
}
print(counts)
}
}