首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握

List具备以下性质: 可以保存重复的值 有先后顺序 scala中,也有两种列表,一种是不可变列表、另一种是可变列表 不可变列表定义 不可变列表就是列表元素、长度都是不可变的。...相信大家可以做到的 拉链拉开 拉链:使用zip将两个列表组合一个元素为元组的列表 拉开:将一个包含元组的列表,解开成包含两个列表的元组 示例 有两个列表一个列表保存三个学生的姓名,分别为...:zhangsan、lisi、wangwu 第二个列表保存三个学生的年龄,分别为:19, 20, 21 使用zip操作将两个列表的数据"拉"在一起,形成 zhangsan->19, lisi ->20,...[Int] = List(3, 4) 差集 diff表示对两个列表取差集,例如: a1.diff(a2),表示获取a1a2中不存在的元素 同理 a2.diff(a1) 就是取 a2 a1中不存在的元素...示例 定义第一个列表,包含以下元素:1,2,3,4 定义第二个列表,包含以下元素:3,4,5,6 使用diff获取这两个列表的差集 scala> val a1 = List(1,2,3,4) a1: List

72810
您找到你想要的搜索结果了吗?
是的
没有找到

scala快速入门系列【列表

List具备以下性质: 可以保存重复的值 有先后顺序 scala中,也有两种列表,一种是不可变列表、另一种是可变列表。...拉链拉开 拉链:使用zip将两个列表组合一个元素为元组的列表 拉开:使用flatten将一个包含元组的列表,解开成包含两个列表的元组 示例1 有两个列表 – 第一个列表保存三个学生的姓名,分别为...:zhangsan、lisi、wangwu – 第二个列表保存三个学生的年龄,分别为:19, 20, 21 使用zip操作将两个列表的数据"拉"在一起,形成 zhangsan->19, lisi...示例 定义第一个列表,包含以下元素:1,2,3,4 定义第二个列表,包含以下元素:3,4,5,6 使用union操作,获取这两个列表的并集 使用distinct操作,去除重复的元素 参考代码 ?...差集 diff表示对两个列表取差集,例如: a1.diff(a2),表示获取a1a2中不存在的元素 示例 定义第一个列表,包含以下元素:1,2,3,4 定义第二个列表,包含以下元素:3,4,5,6

68220

如何在 Scala 中科学地操作 collection(一)集合类型操作

(修改,添加,删除某个集合元素)不可变集合,只是这些操作每一种情况下都是返回一个新的集合,同时,原来的集合不会发生改变,由于此特性,不可变集合也是线程安全的,Scala默认情况下采用的是不可变集合。...映射 Map Map 中的元素呈现 key -> value 的形式,其中第一个参数是映射的键,第二个参数是映射的值。且Map中每一个元素的键是唯一的。...flatMap 不仅将嵌套结构扁平化了,而且改变了原来集合内层列表元素的值,其实 flatMap 就是 flatten 之后再做一个 map 操作。...((Student(Jilen,30,m),0), (Student(Shaw,18,m),1),(Student(Yison,40,f),2)) zipWithIndex 将可以将集合内的元素元素集合中的位置组合在一起...,其实就是将集合内的元素元素的位置组成了一个元组,元组的第二个值是元素集合中所处的位置。

1.1K61

Scala专题系列(四) : Scala集合

Set是一组没有先后次序的值,SortedSet中,元素以某种排过序的顺序被访问 Map是一组(键,值)对偶,SortedMap按照键的顺序访问其中的value apply方法 每个Scala集合或类都有一个带有...加入没有apply方法,需要使用new关键字来得到F对象 二:集合的可变不可变性 Scala中同时支持可变和不可变的集合,不可变的集合从不改变,因此是线程安全的 Scala编程中优先采用不可变集合,...Scala.collection 包中的伴生对象产出不可变的集合,比如:scala.collection.Map("year" -> 2017)就是一个不可变的映射 不可变集中,如果要添加元素,那么它将会生成一个新的集合...,如果添加的元素集合中已经存在,那么返回的将是老的集合的引用 列表(List) Scala中,列表(List) 要么是Nil(空表)要么是一个head元素加上一个tail,而tail又是一个列表,比如...val list1 = List(1.0,2.3,3.4) val list2 = List(1,2,3,4) 那么zip方法让你将它们组合一个个对偶的列表,例如 list1 zip list2

63230

01.Scala:开发环境搭建、变量、判断、循环、函数、集合

位运算符 &、||、^、> scala中没有,++、–运算符 Java不一样,scala中,可以直接使用==、!=进行比较,它们equals方法表示一致。...而比较两个对象的引用值,使用eq 示例 有一个字符串"abc",再创建第二个字符串,值为:一个字符串后拼接一个空字符串。 然后使用比较这两个字符串是否相等、再查看它们的引用值是否相等。...: List[Int] = List(1, 2, 3, 4, 5) 13.4.7 拉链拉开 拉链:使用zip将两个列表组合一个元素为元组的列表 拉开:将一个包含元组的列表,解开成包含两个列表的元组...:3:4 13.4.10 并集 union表示对两个列表取并集,不去重 示例 定义第一个列表,包含以下元素:1,2,3,4 定义第二个列表,包含以下元素:3,4,5,6 使用union操作,获取这两个列表的并集...diff表示对两个列表取差集,例如: a1.diff(a2),表示获取a1a2中不存在的元素 示例 定义第一个列表,包含以下元素:1,2,3,4 定义第二个列表,包含以下元素:3,4,5,6 使用diff

4.1K20

2021年大数据常用语言Scala(二十七):函数式编程 聚合操作

类型参数为:当前聚合后的变量第二个A1类型参数为:当前要进行聚合的元素 返回值 A1 列表最终聚合为一个元素 reduce执行流程分析 [!..., 10) scala> a.reduce((x,y) => x + y) res5: Int = 55 // 第一个下划线表示第一个参数,就是历史的聚合数据结果 // 第二个下划线表示第二个参数,...就是当前要聚合的数据元素 scala> a.reduce(_ + _) res53: Int = 55 // reduce一样,从左往右计算 scala> a.reduceLeft(_ + _) res0...: Int = 55 // 从右往左聚合计算 scala> a.reduceRight(_ + _) res1: Int = 55 折叠  fold foldreduce很像,但是多了一个指定初始值参数...返回值 A1 列表最终折叠为一个元素 [!

33920

Scala语法笔记

JAVA中,举例你S是一个字符串,那么s(i)就是该字符串的第i个字符(s.charAt(i)).Scala中使用apply的方法 JAVAC++的?...显示声明Unit返回类型 数组: 声明一个空的数组缓冲,用+=尾端添加元素,用()而不是用{} 移除用trimEnd 也可在任意位置插入或移除元素 其中remove方法第二个参数为要删除多少个 遍历数组...toString返回的值就无意义了 使用List 使用:: 把一个元素组合到已有List的最前端,然后返回结果List 使用元组Tuple: 列表一样,元组也是不可变的,但列表不同,元组可以包含不同类型的元素...scala.collection包里面有一个基础Map特质和两个子特质Map:可变的Mapscala.collection.mutable里,不可变的scala.collection.immutable...直觉上,Scala的闭包捕获了变量本身,而不是变量指向的值 重复参数 Scala允许你指明函数的最后一个参数可以是重复的。这可以允许客户向函数传入可变长度参数列表

1.2K20

带你快速掌握Scala操作———(3)

4、列表 定义 可变列表 定义 可变列表操作 列表常用操作 判断列表是否为空 拼接两个列表 获取列表的首个元素和剩余部分 反转列表 获取列表前缀和后缀 扁平化(压平) 拉链拉开 转换字符串 生成字符串...scala> a._1 res41: String = zhangsan // 获取第二个元素 scala> a._2 res42: String = male 4、列表 列表scala中最重要的...List具备以下性质:  可以保存重复的值  有先后顺序 scala中,也有两种列表,一种是不可变列表、另一种是可变列表 定义 不可变列表就是列表元素、长度都是不可变的。...定义一个可变列表包含以下元素:1,2,3 2. 获取第一个元素 3. 添加一个新的元素:4 4. 追加一个列表,该列表包含以下元素:5,6,7 5. 删除元素7 6...., List(4, 5)) scala> a.flatten res0: List[Int] = List(1, 2, 3, 4, 5) 拉链拉开  拉链:使用zip将两个列表组合一个元素为元组的列表

1.9K30

Scala专题系列(九) : Scala函数式编程

Scala中的函数式编程 作为一门面向对象函数式的混合范式语言,Scala并不强制函数必须是纯函数,也并不要求变量时不可变的(但是尽量将变量设为不可变) 在前面几个章节中,我们学习了Scala的高阶函数...,,下面来举几个例子: 我们将其组合在一起,用它来对一个整数列表进行遍历,过滤出其中的偶数,对每个偶数乘以 2, 再使用 reduce 函数将各个整数乘在一起: (1 to 10) filter (_...其中一个参数是集合中的当前元素,另一个参数就是累乘值,是上一次调用 reduce 函数得到的部分元素的累乘结果。...(第一个参数是累乘参数,还是第二个参数是累乘参数取决于具体实现)对传入的函数的要求是:其计算必须满足结合律,类似乘法加法,因为我们不保证集合中元素的计算顺序。...注意, multiplier 事实上也是一个函数。由于函数 Scala 中是第一等的,因此我们定义了表示函数的变量。

37610

纯函数领域模型

Scala函数式编程》认为常见的副作用包括: 修改一个变量 直接修改数据结构 设置一个对象的成员 抛出一个异常或以一个错误终止 打印到终端或读取用户的输入 读取或写入一个文件 屏幕上绘画 例如,读取花名册文件对内容进行解析获得收件人电子邮件列表的函数为...这种组合性如下图所示: ? 图中的andThen是Scala语言提供的组合子,它可以组合两个函数形成一个新的函数。Scala还提供了compose组合子,二者的区别在于组合函数的顺序不同。...我们可以简单地将一个Monad理解为提供bind功能的容器。Scala语言中,bind功能就是flatMap函数。可以简单地将flatMap函数理解为是mapflattern的组合。..., python, go) 对该列表执行map操作,对列表中的每个元素执行toCharArray()函数,就可以把一个字符串转换为同样是Monad的字符数组: scala> l.map(lang =>...例如,我们将两个同等大小列表中的元素项相乘,使用flatMapmap的代码为: val ns = List(1, 2) val os = List(4, 5) val qs = ns.flatMap(

1.1K10

大数据之脚踏实地学16--Scala列表、元组映射

本期中将介绍Scala的其他常用的数据结构,包括列表、元组和映射。...列表 Scala中的列表之前分享的数组有一些相似之处,例如列表中的元素也需要具有相同的数据类型、对于不可变列表而言,其长度也是固定的。...scala.collection.mutable var ls3 = mutable.ListBuffer(1,1,2,3,5,8,13) 首先介绍一下可变列表的增删改操作,然后再介绍可变列表不可以列表都可以使用的一些常规方法...列表的增删改操作 可变列表的增 对于可变列表而言,可以借助于append方法列表的末尾增加一个或多个元素;使用+=方法末尾增加一个元素;使用++=方法追加另一个列表;使用insert方法列表的指定位置增加一个元素...++=(ls2) // 将一个列表添加到可变列表中 println("ls3 = " + ls3) ls3.insert(3,100) // 指定位置插入元素 println("ls3 = " + ls3

47810

Scala语言快速了解一下?

,包含除了第一元素之外的其他元素isEmpty 列表为空时返回true对于Scala列表的任何操作都可以使用这三个基本操作来表达。...方法的第一个参数为元素的数量,可以是二维的,第二个参数为指定的函数,我们通过指定的函数计算结果并返回值插入到列表中,起始值为 0,实例如下:object Test { def main(args:...,但列表不同的是元组可以包含不同类型的元素。...访问元组的元素可以通过数字索引,如下一个元组:val t = (4,3,2,1)我们可以使用 t._1 访问第一个元素, t._2 访问第二个元素,使用 Tuple.productIterator()...{ i =>println("Value = " + i )} }}使用 Tuple.toString() 方法将元组的所有元素组合一个字符串,使用 Tuple.swap 方法来交换元组的元素

3K102

影响Scala语言设计的因素列表

Scala的革新主要来源于它是如何构造并放在一起的。在这部分里,我们罗列了对Scala设计的主要影响。列表并不全——因为围绕着编程语言的设计有太多的好点子,没办法全都列举在这里。...它函数式编程的处理方式骨子里以SML,OCaml和F#为代表的ML家族语言很接近。许多Scala标准库里面的高阶函数同样也出现在ML或Haskell中。...能够横跨不同应用领域的可扩展语言的历史根源是Peter Landin1966年的论文“之后的700种编程语言” (这篇论文中描述的语言,Iswim,Lisp一同为开先河的函数式语言)。...Scala也不是第一个集成函数式和面向对象编程的,尽管也许在这个方向上它走得最远。其他OOP里集成了函数式编程的一些元素的包括Ruby,Smalltalk和Python。...Scala同样也对编程语言领域贡献了一些革新。举例来说,它的抽象类型提供了对泛型类型来说更面向对象的替代,它的特质允许灵活的控件组合,还有他的拆分器提供了独立于表达的方式去做模式匹配。

1.2K70

一个有趣的函数式插入排序实现

分享一个有趣的函数式的插入排序实现方式,它利用Scala的模式匹配和列表的操作,通过递归的方式给列表排序,大概流程是有一个列表x::xs,先对xs排序。再将x插入到正确的位置。...(x) case y :: ys => if (x <= y) x :: xs else y :: insert(x,ys) } 产生的效果就是 scala...println(s"xs:$xs") y :: insert(x,ys)} } 输出结果为: scala...(7, 35, 53, 53) x:34 xs:List(35, 53, 53) res0: List[Int] = List(1, 7, 34, 35, 53, 53) 这个的函数流程可以这么理解,列表会从最后一个元素开始往上比较排序...,每一的比较都是采用需要比较的元素通过递归的方式已有列表元素比较放入到一个合适的位置,再和头元素拼接在一起

27020

2021年大数据常用语言Scala(二十五):函数式编程 排序

---- 排序 scala集合中,可以使用以下几种方式来进行排序 sorted默认排序 sortBy指定字段排序 sortWith自定义排序 默认排序  sorted 示例 定义一个列表,包含以下元素...返回B类型的元素进行排序 返回值 List[A] 返回排序后的列表 示例 有一个列表,分别包含几下文本行:"01 hadoop", "02 flume", "03 hive", "04 spark...[String] = List(02 flume, 01 hadoop, 03 hive, 04 spark) 自定义排序 | sortWith 自定义排序,根据一个函数来进行自定义排序 类似Java.../>不用去想这两个参数是如何传递的, scala会自动帮我们将带处理列表元素两两传递过来让我们进行排序 返回值 List[A] 返回排序后的列表 示例 有一个列表,包含以下元素:2,3,1,6,4,5...: List[Int] = List(6, 5, 4, 3, 2, 1) 两个参数都是只出现一次, 并没有嵌套, 那么可以用下划线代替 第一个下划线代表参数1 第二个下划线代表参数2

28230

Spark2.x学习笔记:2、Scala简单例子

) 5050 scala> 备注:Scalafor循环中对循环变量i的赋值用了“<-”符号,1 to 100指定了一个范围 scala中还有一个和上面的to关键字有类似作用的关键字until,它的不同之处在于不包括最后一个元素...新函数返回一个以原有第二个参数作为参数的函数。...2.9 元祖 列表一样,元组也是不可变的,但列表不同,元组可以包含不同类型的元素。而列表应该是List[Int]或List[String]的样子,元组可以同时拥有Int和String。...map函数faltMap这两个函数 map函数的用法,顾名思义,将一个函数传入map中,然后利用传入的这个函数,将集合中的每个元素处理,并将处理后的结果返回。...object中一般可以为伴生类做一些初始化等操作 (4)伴生对象 Java或C++中,通常会用到既有实例方法也有静态方法的类,Scala中将静态成员分离出来,形成类同名的伴生对象(companion

3.1K80

scala快速入门系列【函数式编程】

scala可以自动来推断出来集合中每个元素参数的类型 创建函数时,可以省略其参数列表的类型 示例 有一个列表,包含以下元素1,2,3,4,请使用foreach方法遍历打印每个元素 使用类型推断简化函数定义...案例 有一个数字列表元素为:1,2,3,4,5,6,7,8,9 请过滤出所有的偶数 参考代码 ? 排序 scala集合中,可以使用以下几种方式来进行排序。...:当前聚合后的变量第二个A1类型参数为:当前要进行聚合的元素 返回值 A1 列表最终聚合为一个元素 reduce执行流程分析 ?...---- 折叠 | fold foldreduce很像,但是多了一个指定初始化值参数。 定义 方法签名 ?...A1类型参数为:当前折叠后的变量第二个A1类型参数为:当前要进行折叠的元素 返回值 A1 列表最终折叠为一个元素 [!

1.1K20
领券