以下代码的输出结果为( )。 val m1 = Map("scala1" -> 100, "scala2" -> 200) val m2 = m1 + ("scala3" -> 300) val v1 = m1("scala2") println(s"v1=$v1") val v2 = m2.getOrElse("scala5", "default") println(s"v2=$v2")
时间: 2023-07-19 15:47:32 浏览: 99
代码的输出结果为:`v1=200` 和 `v2=default`。这是因为:
1. `val m1 = Map("scala1" -> 100, "scala2" -> 200)` 定义了一个不可变的 Map,其中包含两个键值对。
2. `val m2 = m1 + ("scala3" -> 300)` 创建了一个新的 Map,包含了 m1 中的所有键值对和一个新的键值对 "scala3" -> 300。
3. `val v1 = m1("scala2")` 从 m1 中获取键 "scala2" 对应的值,即 200。
4. `val v2 = m2.getOrElse("scala5", "default")` 从 m2 中获取键 "scala5" 对应的值,由于 m2 中并不存在键 "scala5",因此返回默认值 "default"。
因此,输出结果为 `v1=200` 和 `v2=default`。
相关问题
解释一下import scala.io.StdIn object a { def main(args: Array[String]): Unit = { val universities = Map("北京大学"->"北京","天津大学"->"天津","广州大学"->"广州","深圳大学"->"深圳") val getLocation =StdIn.readLine() for ((k, v) <- universities) { val Local: (String => String) = { k => v } if(getLocation==k){ print(Local(k)) } } } }
这段代码是一个 Scala 程序,它使用了 Scala 标准库中的 `scala.io.StdIn` 对象来读取用户的输入。程序定义了一个名为 `universities` 的不可变映射,将一些大学名字和它们所在的城市对应起来。然后,程序使用 `StdIn.readLine()` 方法从标准输入读取用户输入的字符串,将其保存在变量 `getLocation` 中。接下来,程序使用 `for` 循环遍历 `universities` 映射中的每个键值对,并定义了一个名为 `Local` 的函数,用于获取城市名。如果用户输入的字符串与 `universities` 中的某个键匹配,程序会调用 `Local` 函数获取对应的城市名,并将其打印到控制台上。
解释这段代码:scala> val lines = sc.textFile("/usr/local/spark/mycode/exercise/bloginfo.txt") scala> val totalFansNum = lines.map(line => line.split("\t")(1)).map(id => (id, 1)).reduceByKey(_ + _) scala> totalFansNum.collect()
这段代码是使用Scala编写的Spark程序,用于统计一个博客的所有粉丝数量。
首先,使用`sc.textFile()`方法读取一个文本文件`/usr/local/spark/mycode/exercise/bloginfo.txt`中的内容,并将每一行作为RDD中的一个元素,存储到`lines`变量中。
接着,使用`map()`方法对每个元素进行处理,将每行按照制表符`\t`进行切分,取出第二个元素(即博客的粉丝数量),并将其转换为一个`(id, 1)`的元组。
然后,使用`reduceByKey()`方法对相同`id`的元素进行聚合,将对应的值相加,得到每个`id`的粉丝数量总和。
最后,使用`collect()`方法将统计结果返回到Driver端,并以数组的形式打印出来。
阅读全文