最近在做一个spark项目,顺便分享一下我的Scala入门过程。这一系列文章假定读者有一定的java或者其他面向对象编程语言基础。本文主要简单介绍Scala的集合类型,包括Array,Tuple和Map。
照例先上一段代码
注:ITEYE不支持Scala语法高亮,所以为了看起来方便,我选择作为Java来展示。
object TestScala3 { def main(args: Array[String]): Unit = { val tuple = (1, "two", "three", true) println(tuple._1) println(tuple._2) val array = Array(1, "two", "three", true) for (i <- 0 until array.length) { println(array(i)) } for (item <- array) println(item) val map = Map(1 -> "one", "two" -> 2, true -> "true") for ((k, v) <- map) println("key = " + k + ", value = " + v) for ((_, v) <- map) println("value = " + v) println(map.get(1)) println(map.get(3)) } }
第一个例子,我们创建了一个4个元素的tuple,并打印出它的前两个元素。tuple是一个元组,它可以包含若干个不同类型的元素(在Scala2.8之后,Array和List也支持不同类型的元素)。在取用tuple中的元素时,使用下划线加index的语法,但注意,与其他集合不同,tuple的index是从1开始的,实际上当你尝试写tuple._0时,会有得到编译错误“value _0 is not a member of (Int, String, String, Boolean)”, 并没有0这个下标。另外我们也从编译错误信息中看到,Scala具备类型推导的能力,它能够知道元组中的每个元素的类型。
在Java的函数中,如果我们想返回多个值,只能新建一个POJO去接,或者把返回值写入参数传入的引用中,非常麻烦,但在Scala中我们使用tuple就非常方便。
第二个例子,我们生命了一个Array,遍历并打印出Array中的每个元素。这里我们用到0until N,在上篇中我们写过0 to N,他们的区别在于until是一个前闭后开的函数,并不包括N,而to包括。
第三个例子,map储存的是键值对,用->声明。遍历时,把map中的每个键值对赋值给一个两个元素的tuple,再将这个tuple的两个元素打印出来。如果我们只关心map中的key或者value,我们可以使用占位符(_)来替代不关心的元素。
相关推荐
第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...
第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...
第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...
第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...
第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...
第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...
第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...
第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...
Scala构建 具有各种Scala版本/构建工具的项目模板。 文件夹包含粗格式的模板<Scala>-<build>- Niv用于管理依赖项。
Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 函数定义/声明 函数运行机制 递归 函数注意事项和细节 过程 惰性函数和异常 面向对象编程初级...
第三章 运算符 001.导学 01.算术运算符 02.赋值运算符 03.关系运算符 04.逻辑运算符 05.进制和8421码 06.原反补码计算规则 07.位运算符 08.案例_交换变量值 第四章 流程控制结构 00.导学 01.流程控制结构之顺序结构...
Spark 和 Scala 能够紧密集成, 例如 使用Scala语言操作大数据集合的时候,用户可以像是在操作本地数据集那样简单操作Spark上的分布式数据 集-RDD(这个概念是Spark 批处理的核心术语),继而简化大数据集的处理难度...
此文档是讲解实战Scala,希望对喜欢大数据的同学有所帮助!!! 学习Scala语言,不仅仅意味着熟悉新的API,更重要的是...对于Scala新手来说这是一本不错的入门书,对于老手来说也是一本夯实基础,检视自己所学知识的好书。
scala安装使用、scala基础、scala方法与函数、scala tuple/集合/list/字符串/set/map、、trait特性、模式匹配、隐式转换、样例类、actorModal
本书不是Scala的入门级教程,而是适合有经验的Scala程序员向专家水平进阶的参考读物。本书适合想要了解Scala语言的底层机制和技术细节的读者阅读参考。 专业书评 “权威并且易于理解”。——Martin Odersky Scala之...
Scala的Bloom过滤器 总览 “ Bloom过滤器是一种节省空间的概率数据结构,用于测试元素是否为集合的成员。可能会出现假阳性匹配,但否定否定匹配。换句话说,查询返回“集合”或“绝对不在集合中。”可以将元素添加到...
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同...与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
java8集合源码类型类示例 一个关于类型类的小型学习项目,入门级别是“初学者”。 使用示例 只需克隆项目: git clone git@github.com:dnvriend/type-classes-example.git 进入目录并启动sbt。 启动测试 要启动测试...
大数据基础知识入门 社会保障事业部 张火磊 主要内容 大数据价值 03 大数据概念、特性、由来 01 大数据应用举例 04 02 Hadoop技术介绍 大数据概念、特性、由来 什么叫大数据? 麦肯锡全球研究所给出的定义是:一 种...
与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...