[String,Int] = Map(Alice -> 90, Kim -> 89, Bob -> 98) 上面构造了一个不可变的Map[String, Int],其值也不能被改变.如果想要一个可变映射...更新映射中的值 在可变映射中,可以更新某个映射的值,也可以添加一个新的键值对: scala> val scores = scala.collection.mutable.Map("Alice" ->...排序映射 在操作映射时,我们需要选定一个映射(哈希表还是平衡树).默认情况下,scala给的是哈希表.有时候我们想对键进行一个排序,顺序访问键,这就需要一个树形映射: scala> val scores...与Java互操作 如果你有一个Java映射,想要转换为Scala映射,以便便捷的使用Scala映射的方法,只需要增加如下语句: import scala.collection.JavaConversions.mapAsScalaMap...= Bob 通常,使用模式匹配的方式来获取元组的组元: scala> val (id, score, name) = bobScore // 将变量id赋值为1,变量score赋值为98.5,变量name
2.2 Scala变量声明 和java类似,Scala中的变量需要在创建时进行声明,有var和val两种声明方式,其中val类型变量定义后不可以重新赋值,而var类型变量声明之后可以自由赋新值,下面在...[Int] = ArrayBuffer(0, 1, 4, 5) 2.4.2 Map映射 与Python中的字典相似,Scala中的映射就是键值对的集合Map,默认情况下Scala中同样是使用不可变的映射...1.定义映射 我们用->连接键值,左边为键,右边为值,键唯一: scala> var DemoMap = Map("Scala"->1,"Python"->2,"R"->3) DemoMap: scala.collection.immutable.Map...6.为可变映射更新或新增键值对 //更新已有的可变Map映射中指定键的值,若不存在此键则创造新键值对 scala> DemoMap("Julia") = 100 scala> DemoMap res1...,Scala中的列表被设计来存放各种类型的元素,且Scala中的列表类型有三种模式,一种是当列表内部元素类型统一时,如List[Int],一种是当列表中同时包含几种不同类型元素时,为List[Any],
的方法区中 可以将函数对象赋值给一个变量,在运行时,它是加载到JVM的堆内存中 函数是一个对象,继承自FunctionN,函数对象有apply,curried,toString,tupled这些方法...List具备以下性质: 可以保存重复的值 有先后顺序 在scala中,也有两种列表,一种是不可变列表、另一种是可变列表 定义 不可变列表就是列表的元素、长度都是不可变的。...不保证插入顺序 scala中的集也分为两种,一种是不可变集,另一种是可变集。...它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。...不可变Map 语法 val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好 val/var map = Map((键, 值), (键, 值), (键, 值)
fib(f-1) println(fib(1),fib(2),fib(3),fib(4),fib(5)) // 在scala中,函数也是一种变量类型,因此也同样可以赋值为某个常量或者当作另一个函数的参数...(2),map1.getOrElse(5,"default")) // Map默认是不可变的Map,也可以引入mutable包中的可变的Map import scala.collection.mutable...+= (3 -> 3) 报错,因为原始Map不可变,+=会创建一个新的,但是map1又是常量 mmap += (3->3,4->4) println(mmap) 字典的差异: 有两种创建语法,个人喜欢第二种...,更短一些; Map不可变指的是它的元素个数、元素内容都不能变; 如果用var来定义一个不可变Map,那么看似可变,实际上是创建了一个新的Map对象; 元组 val tuple = (1,1.2,"abc...; 外部数据 这里有一个很大的问题,如果你的数据中的列名有中文,那么建议全部重命名为英文,否在在构建SQL表达式等地方会报错,奇怪的是这部分在Python中倒是正常的,这个坑也填了好久。。。。
中,函数也是一种变量类型,因此也同样可以赋值为某个常量或者当作另一个函数的参数 val f = (x:Int) => x*10 // 简易函数就是lambda表达式 println(f) def ff(...def定义的方法,甚至不能直接print 上面介绍的其实都是函数而不是方法: 定义一个变量,将一个函数赋值给它; 将一个函数变量作为入参传入到另一个函数中; 这里对于函数的理解可以想象数学中的函数,数学中的函数嵌套...(2),map1.getOrElse(5,"default")) // Map默认是不可变的Map,也可以引入mutable包中的可变的Map import scala.collection.mutable...+= (3 -> 3) 报错,因为原始Map不可变,+=会创建一个新的,但是map1又是常量 mmap += (3->3,4->4) println(mmap) 字典的差异: 有两种创建语法,个人喜欢第二种...,更短一些; Map不可变指的是它的元素个数、元素内容都不能变; 如果用var来定义一个不可变Map,那么看似可变,实际上是创建了一个新的Map对象; 元组 val tuple = (1,1.2,"abc
val a4=new Array[Int](3) 2.赋值和取值 1>赋值 赋值方式一:用for循环为数组var1赋值。 ...赋值方式二:为变长数组赋值,注意:变长数组提供了append方法用于赋值,并且隐式的改变数组长度。 ...所有的值都可以通过键来获取。 Map 中的键都是唯一的。Map 也叫哈希表(Hash tables)。 ...Map有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。 默认情况下Scala使用不可变Map。...如果你需要使用可变集合,你需要显式的引入 import scala.collection.mutable.Map 类 在Scala中你可以同时使用可变与不可变 Map,不可变的直接使用 Map,
是所有类的子类,那么它可以赋值为任何类型 问题 以下代码是否有问题?...方法和函数的区别 方法是隶属于类或者对象的,在运行时,它是加载到JVM的方法区中 可以将函数对象赋值给一个变量,在运行时,它是加载到JVM的堆内存中 函数是一个对象,继承自FunctionN,函数对象有...List具备以下性质: 可以保存重复的值 有先后顺序 在scala中,也有两种列表,一种是不可变列表、另一种是可变列表 13.1 不可变列表 定义 不可变列表就是列表的元素、长度都是不可变的。...映射 Map可以称之为映射。它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。...15.1 不可变Map 定义 语法 val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好 val/var map = Map((键, 值), (键, 值)
4、对于不可变的Map可以通过重新赋值进行增改:val so=scores+(“bob”->1) 删:val so=scores-“bob”。...可变序列与java中的大体类似 4、列表:在Scala中列表要么是空的要么是一个head元素加上一个tail元素而tail元素又是一个链表,我的思路是:嵌套链表,以head开始tail嵌套。...3、Scala中你也可以对表达式的类型进行匹配,如:但是不能匹配特定的泛型,如特定的Map类型 obj match { case x:Int=>x //其中x为变量,只能匹配整数并将obj赋值给...Nothing =>" " } 6、Option类型:Scala中Option[T]类型是用来处理java中null值类型的,Option有两个子类型一个为None,一个位Some[T]。...比如map的get方法在java中可能返回为null而导致出现NullPointerException异常,而Scala中返回的是一个Option[T]类型当值不存在时为None,存在时返回Some(T
Scala语法的强大和奔放,以至于让我一度质疑“Python语法足够简洁”的论断。...那么,Scala中的Array有什么特别之处吗?一句话概括Scala中的Array就是:同质、数据可变、长度不可变的集合。...这里之所以强调Array中的数据可变,是因为与之对应的是List数据不可变 长度不可变:这与C和Java中的数组有一定相似之处,即一旦初始指定了Array的数据个数(即Array的length),那么后续则不能再发生改变...[Int,Int] = Map(2 -> 3, 3 -> 5) 类似于Python中的dict,Scala中的Map也可通过keys和values获取所有的键和值,且keys实际上就是一个Set,因而不会存在重复值...;而values则不受这一限制: scala> map1.keys // 获取所有键,返回结果是一个Set类型 val res23: Iterable[Int] = Set(1, 3) scala>
(A && B) 运算结果为 true 4、赋值运算符 运算符 描述 实例 = 简单的赋值运算符,将一个表达式的值赋给一个左值 C = A + B 将 A + B 表达式结果赋值给 C += 相加后再赋值...private为私有权限,只在类的内部和伴生对象中可用。 protected为受保护权限,Scala中受保护权限比Java中更严格,同类、子类可以访问,同包无法访问。...建议:在操作集合的时候,不可变用符号,可变用方法。 不可变集合 Set、Map是Java中也有的集合。...我们发现经典的数据结构比如Queue和Stack被归属到LinearSeq(线性序列)。 大家注意Scala中的Map体系有一个SortedMap,说明Scala的Map可以支持排序。...集合 Scala中的Map和Java类似,**也是一个散列表,它存储的内容也是键值对(key-value)**映射。
) 5050 scala> 备注:Scala在for循环中对循环变量i的赋值用了“一个范围 在scala中还有一个和上面的to关键字有类似作用的关键字until,它的不同之处在于不包括最后一个元素...这些_N数字是基于1的,而不是基于0的,因为对于拥有静态类型元组的其他语言,如Haskell和ML,从1开始是传统的设定。 2.10 Map Scala映射(Map)是一组键/值对的对象。...任何值都可以根据键来进行检索。键在映射中是唯一的,但值不一定是唯一的。映射也称为哈希表。映射有两种,不可变的和可变的。可变对象和不可变对象之间的区别在于,当对象不可变时,对象本身无法更改。...如果想同时使用可变的和不可变映射(Map),那么可以继续引用不可变映射(Map),但是可以将mutable集合引用mutable.Map。...函数与faltMap这两个函数 map函数的用法,顾名思义,将一个函数传入map中,然后利用传入的这个函数,将集合中的每个元素处理,并将处理后的结果返回。
Scala高级 一、集合 Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有的集合都扩展自 Iterable 特质,在 Scala 中集合有可变(mutable)和不可变(immutable...6.大家注意 Scala 中的 Map 体系有一个 SortedMap,说明 Scala 的 Map 可以支持排序。...1) Scala 中的 Map 和 Java 类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala 中不可变的 Map 是有序的,可变的 Map 是无序的。...2) Scala 中,有可变 Map (scala.collection.mutable.Map) 和 不可变 Map(scala.collection.immutable.Map)。...2) Array(x,y) 匹配数组有两个元素,并将两个元素赋值为 x 和 y。
主要还是做个笔记,总结一下scala的主要特性,为spark编程做准备 第一节 入门 balalbala一通,就是告诉你scala有多棒,是spark的开发语言,以后处理大数据很好用之类的。...第三节 Array、List Array和List的操作,也是普通得一批 第四节 Set、Map、Tuple、队列 有两种,一种是可变集合另一种是不可变集合;可变集合可以随便玩,不可变集合创建了就不能动了...,对,我是本地人,我有一百种方法写这个函数。...方法中调用(写法1) scala> println(Array(1,2,3,4).map(increase).mkString(",")) //匿名函数写法(写法2) scala>println(Array...scala> val fun2:(Double)=>Double=1+_ 另外还有闭包,好像就是在函数里定义了一个未知的变量,等什么时候要用的时候再赋值。
---- Map对象 Map可以称之为映射。它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。...不可变Map 定义 语法 val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好 val/var map = Map((键, 值), (键, 值), (键,...示例 定义一个映射,包含以下学生姓名和年龄数据 "zhangsan", 30 "lisi", 40 获取zhangsan的年龄 参考代码 scala> val map = Map("zhangsan"-...zhangsan的年龄为20 scala> val map = Map("zhangsan"->30, "lisi"->40) map: scala.collection.mutable.Map[String...-1 新增一个学生:wangwu, 35 将lisi从可变映射中移除 参考代码 scala> val map = Map("zhangsan"->30, "lisi"->40) map: scala.collection.mutable.Map
Scala开发参照清单 这里列出在开发一个Scala工程中需要参照的资料。...不过作为初学者的我,scala极其容易导致代码的可读性比较差。 Java语言还是有其优势。...implicit conversions逻辑发现类型Int/Long不匹配, 然后在一个implicit view(可以看成一个函数pool,包含了所有的implicit functions)中找一个输入为...比如,你想在Scala的List类上,增加一个函数,而不用去修改Scala的发布包, 在Scala 2.10版以后,就可以通过implicit classes实现, 之前的版本,可以通过Pimp-my-library...Nothing是Scala中的一个Trait。基本上没有用。(我猜的) ## 和 == 对 equals 和 hashCode 在Scala中, ##方法相当于Java中的hashCode方法。
往期回顾 大数据之脚踏实地学15--Scala的数组操作 前言 在上一期的《大数据之脚踏实地学15--Scala的数组操作》分享中,介绍了Scala的数组相关知识,借助于Array函数可以构造定长数组(...列表 Scala中的列表与之前分享的数组有一些相似之处,例如列表中的元素也需要具有相同的数据类型、对于不可变列表而言,其长度也是固定的。...列表的增删改操作 可变列表的增 对于可变列表而言,可以借助于append方法在列表的末尾增加一个或多个元素;使用+=方法在末尾增加一个元素;使用++=方法追加另一个列表;使用insert方法在列表的指定位置增加一个元素...info.get("score")) // 返回映射的键、值、键值对 println("映射的键为:" + info.keySet) println("映射的值为:" + info.values) println...("映射的键值对为:" + info.toList) // 结果输出 info中name键对应的值:Snake info中score键对应的值:Some(88) 映射的键为:Set(name, score
在 本系列 前几期文章中,我介绍了 Scala 中一些面向对象的编程方法,这些方法实际上与 Java 编程的区别不是很大。...当它为 0 的时候,与 null 有什么关系。 对于我们大多数人都非常熟悉的概念,要在软件中表示为 “无” 是一件十分困难的事。...Map 中 get 的返回值实际上并不对应于传递的键。...相反,它是一个 Option[T] 实例,可以是与某个值有关的 Some(),也可以是 None,因此可以很清晰地表示没有在 map 中找到键。...如果它可以表示 map 上存在某个键,但是有对应的 null 值,这一点特别重要了。比如清单 1 中 Los Angeles 键。
这本书的名字叫《快学scala》,虽然是本比较久远的书,但是也算是scala入门非常经典的读物,主要是对比java和scala的语言特点写出来的,我早期做了这样一套读书笔记,由于工作的需要,要重新使用scala...构建一个不可变的映射: scala> val scores = Map(“Alice” -> 10, “Bob” -> 20, “Cindy” -> 30) 构建一个可变映射方法如下: scala> val...scores = scala.collenction.mutable.Map(“Alice” -> 10, “Bob” -> 20, “Cindy” -> 30) 也可以先构建一个空格的映射开始,但是必须指定类型参数...scala> val scores = scala.collenction.mutable.HashMap[String, Int] 4.2 映射赋值 映射赋值和增加新的映射关系操作相同 scala>...scala> scores -= “Alice" 这里要注意的是不能更新一个不可变的映射,但是可以将操作结果传给新的映射。
Scala有一个很强大的类型自动推导功能,它可以根据右值及上下文自动推导出变量的类型。你可以通过如下方式来直接声明并赋值。...scala> val a = 30 + "岁" a: String = 30岁 Immutable 函数式编程有一个很重要的特性:不可变性。...Scala中除了变量的不可变性,它还定义了一套不可变集合scala.collection.immutable val代表这是一个final variable,它是一个常量。...List Scala中List是一个不可变列表集合,它很精妙的使用递归结构定义了一个列表集合。...[String,String] = Map(b -> B, c -> C) Scala中定义Map时,传入的每个Entry(K、V对)其实就是一个Tuple2(有两个元素的元组),而->是定义Tuple2
入门 Spark 的路上很难不接触 Scala 。Scala 似乎是为 java 提供了很多『类似函数式编程』的语法糖,这里记录一下这个语言独特的地方分享给读者朋友们。 ?...这里我直接参考:scala中case的用法[1] // 一.简单匹配,值匹配: val bools = List(true, false) for (bool <- bools) { bool...Scala 中万物皆对象。 var increase = (x: Int) => x + 1 如上,函数是一等公民,可以赋值给变量。...基本数据结构 有以下概念: 不可变列表 List 与可变列表 ListBuffer 定长数组 Array 与变长数组 ArrayBuffer 不可变集合 Set 与可变集合 scala.collection.mutable.Set...映射 Map 与 可变映射 scala.collection.mutable.Map 元组 Tuple 注意事项与 Scala 奇技淫巧 使用 until 是遍历数组的好办法,by 和 _* 特殊意义
领取专属 10元无门槛券
手把手带您无忧上云