Collections
Map Lookup
Look up a value by key with a fallback.
map-lookup
A map stores values by key. A fallback handles keys that are not present.
Map Lookup
MapLookup.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val key = "scala"
val scores = Map("scala" -> 95, "java" -> 88)
val score = scores.getOrElse(key, 0)
val label = if (score > 0) "known" else "missing"
println("key=" + key)
println("score=" + score)
println("label=" + label)
}
}
object Main {
def main(args: Array[String]): Unit = {
val key = "java"
val scores = Map("scala" -> 95, "java" -> 88)
val score = scores.getOrElse(key, 0)
val label = if (score > 0) "known" else "missing"
println("key=" + key)
println("score=" + score)
println("label=" + label)
}
}
object Main {
def main(args: Array[String]): Unit = {
val key = "ruby"
val scores = Map("scala" -> 95, "java" -> 88)
val score = scores.getOrElse(key, 0)
val label = if (score > 0) "known" else "missing"
println("key=" + key)
println("score=" + score)
println("label=" + label)
}
}
key ← scala, scores ← Map(scala -> 95, java -> 88), score ← 95
1object Main {2 def main(args: Array[String]): Unit = {3 val key→ scala = "scala" //@key="java", "ruby"4 val scores→ Map(scala -> 95, java -> 88) = Map("scala" -> 95, "java" -> 88)5 val score→ 95 = scoresMap(scala -> 95, java -> 88).getOrElse(keyscala, 0)6 val label→ known = if (score95 > 0) "known" else "missing"78 println("key=" + keyscala)9 println("score=" + score95)10 println("label=" + labelknown)11 }12}outputkey=scala score=95 label=known
key ← java, scores ← Map(scala -> 95, java -> 88), score ← 88
1object Main {2 def main(args: Array[String]): Unit = {3 val key→ java = "java"4 val scores→ Map(scala -> 95, java -> 88) = Map("scala" -> 95, "java" -> 88)5 val score→ 88 = scoresMap(scala -> 95, java -> 88).getOrElse(keyjava, 0)6 val label→ known = if (score88 > 0) "known" else "missing"78 println("key=" + keyjava)9 println("score=" + score88)10 println("label=" + labelknown)11 }12}outputkey=java score=88 label=known
key ← ruby, scores ← Map(scala -> 95, java -> 88), score ← 0, label ← missing
1object Main {2 def main(args: Array[String]): Unit = {3 val key→ ruby = "ruby"4 val scores→ Map(scala -> 95, java -> 88) = Map("scala" -> 95, "java" -> 88)5 val score→ 0 = scoresMap(scala -> 95, java -> 88).getOrElse(keyruby, 0)6 val label→ missing = if (score0 > 0) "known" else "missing"78 println("key=" + keyruby)9 println("score=" + score0)10 println("label=" + labelmissing)11 }12}outputkey=ruby score=0 label=missing
Look Up with a Fallback
- The map stores scores for
scalaandjava. keyisscala.getOrElse(key, 0)returns the stored score.- A positive score makes the label
known. | Key | Score | Label | | --- | --- | --- | |scala|95|known| |ruby|0|missing|
Exercise: MapLookup.scala
Look up a score with getOrElse, then print the score and known-or-missing label