Scala中的Map】的更多相关文章

Map结构是一种非常常见的结构,在各种程序语言都有对应的api,由于Spark的底层语言是Scala,所以有必要来了解下Scala中的Map使用方法. (1)不可变Map特点: api不太丰富 如果是var修饰,引用可变,支持读写 如果是val修饰,引用不可变,只能写入一次值,其后只读 var a:Map[String,Int]=Map("k1"->1,"k2"->2)//初始化构造函数 a += ("k3"->3)//添加元素…
1. Map集合 1.1 Scala中的Map介绍 Scala中的Map 和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的Map是无序的. Scala中,有可变Map (scala.collection.mutable.Map) 和 不可变Map(scala.collection.immutable.Map) 1.2 构建map 构建不可变map ​ Scala中的不可变Map是有序,构建Map中的元素底层是Tuple2…
映射 映射是对偶的集合. 声明映射 映射是对偶的集合. a.声明映射 b.映射中的键值对称作对偶,用( , )表示 c.当映射中不存在key时,取值会报错,解决方案是使用 contains方法,或者getOrElse方法 默认使用的映射中的value是不可修改的,位于scala.collection.immutable包中.如果要修改,必须使用位于scala.collection.mutable包中的Map类型 如果要迭代每一个对偶,还是使用for循环 看代码: object TestScala…
val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8) // 获取所有的key val nameList=scores.map(_._1) // map 函数返回List println(nameList.getClass) 遍历list中的元素 nameList.foreach((x:String)=>print(x+" ")) 输出 :Alice Bob Ci…
scala中Set包含可变set和不可变Set,set的子类HashSet,各有一个扩展了可变和不可变的set特质.  可变set import scala.collection.mutable.Set val movieSet=Set("Hitch","Poltergeist") movieSet+="Shrek" println(movieSet) // Set(Chilies, Tomatoes, Coriander) 不可变set imp…
Scala中的集合对象都有foreach和map两个方法.两个方法的共同点在于:都是用于遍历集合对象,并对每一项执行指定的方法.而两者的差异在于:foreach无返回值(准确说返回void),map返回集合对象.见如下代码及运行结果:b.getClass 得到的是void, 而c.getClass得到的是colletion .再看代码的第9-11行,foreach和map的运行结果一致.结论就是:foreach 无法代替map. 而map方法却可以代替foreach. 问题:为什么scala提供…
在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合.由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的.没有可变的状态,函数就是引用透明(Referential transparency)的和没有副作用(No Side Effect). 任何一种函数式语言中,都有map函数与faltMap这两个函数,比如Python虽然不是纯函数式语言,也有这两个函数.再比如在jdk1.8之后…
import scala.collection.mutable /** * Map集合的简单使用 */ object MapUse { def main(args: Array[String]): Unit = { // 创建一个空的map -- 注意:这里要用实现类,因为Map是抽象类,使用时需要声明具体实现类 val emptyMap = new mutable.HashMap[String,Int]() println(emptyMap) // Map() // 不可变Map val im…
Scala中的 apply 方法有着不同的含义, 对于函数来说该方法意味着调用function本身, 以下说明摘自Programming in Scala, 3rd Edition Every function value is an instance of some class that extends one of several FunctionN traits in package scala, such as Function0 for functions with no parame…
今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码: sc.textFile("hdfs://......").flatMap(_.split(" ")).map(_,1).reduceByKey(_ + _)........ 这种风格的编程方法叫做链式调用,它的实现方法见下面的代码: class Animal {def breathe : this.type = this}class Cat extends Animal…