`
kane_xie
  • 浏览: 143334 次
社区版块
存档分类
最新评论

Scala入门(三):集合

阅读更多
 
最近在做一个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,我们可以使用占位符(_)来替代不关心的元素。

1
1
分享到:
评论

相关推荐

    Scala编程详解 第21讲-Scala编程详解:Actor入门 共8页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    Scala编程详解 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    Scala编程详解 第19讲-Scala编程详解:类型参数 共13页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    Scala编程详解 第4讲-Scala编程详解:条件控制与循环 共7页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    Scala编程详解 第14讲-Scala编程详解:面向对象编程之继承 共13页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    Scala编程详解 第13讲-Scala编程详解:面向对象编程之对象 共9页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    Scala编程详解 第12讲-Scala编程详解:面向对象编程之类 共12页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    Scala编程详解 第9讲-Scala编程详解:数组操作之Array、ArrayBuffer以及遍历数组 共7页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    scala-builds:Scala入门构建的集合,主要用于NixOS

    Scala构建 具有各种Scala版本/构建工具的项目模板。 文件夹包含粗格式的模板&lt;Scala&gt;-&lt;build&gt;- Niv用于管理依赖项。

    SCALA从入门到精通个人笔记含代码

    Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 函数定义/声明 函数运行机制 递归 函数注意事项和细节 过程 惰性函数和异常 面向对象编程初级...

    scala从入门到精通技术教学视频

    第三章 运算符 001.导学 01.算术运算符 02.赋值运算符 03.关系运算符 04.逻辑运算符 05.进制和8421码 06.原反补码计算规则 07.位运算符 08.案例_交换变量值 第四章 流程控制结构 00.导学 01.流程控制结构之顺序结构...

    Scala 基础.pdf

    Spark 和 Scala 能够紧密集成, 例如 使用Scala语言操作大数据集合的时候,用户可以像是在操作本地数据集那样简单操作Spark上的分布式数据 集-RDD(这个概念是Spark 批处理的核心术语),继而简化大数据集的处理难度...

    Scala编程实战.zip

    此文档是讲解实战Scala,希望对喜欢大数据的同学有所帮助!!! 学习Scala语言,不仅仅意味着熟悉新的API,更重要的是...对于Scala新手来说这是一本不错的入门书,对于老手来说也是一本夯实基础,检视自己所学知识的好书。

    Scala快速入门(适合为学Spark学习Scala的同学)

    scala安装使用、scala基础、scala方法与函数、scala tuple/集合/list/字符串/set/map、、trait特性、模式匹配、隐式转换、样例类、actorModal

    Scala in Depth

    本书不是Scala的入门级教程,而是适合有经验的Scala程序员向专家水平进阶的参考读物。本书适合想要了解Scala语言的底层机制和技术细节的读者阅读参考。 专业书评 “权威并且易于理解”。——Martin Odersky Scala之...

    bloom-filter-scala:Scala的Bloom过滤器,对于JVM最快

    Scala的Bloom过滤器 总览 “ Bloom过滤器是一种节省空间的概率数据结构,用于测试元素是否为集合的成员。可能会出现假阳性匹配,但否定否定匹配。换句话说,查询返回“集合”或“绝对不在集合中。”可以将元素添加到...

    spark入门学习基础知识

    Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同...与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。

    java8集合源码-type-classes-example:一个关于类型班的小型学习项目,入门级别是“初学者”

    java8集合源码类型类示例 一个关于类型类的小型学习项目,入门级别是“初学者”。 使用示例 只需克隆项目: git clone git@github.com:dnvriend/type-classes-example.git 进入目录并启动sbt。 启动测试 要启动测试...

    大数据基础知识入门.pdf

    大数据基础知识入门 社会保障事业部 张火磊 主要内容 大数据价值 03 大数据概念、特性、由来 01 大数据应用举例 04 02 Hadoop技术介绍 大数据概念、特性、由来 什么叫大数据? 麦肯锡全球研究所给出的定义是:一 种...

    1.1.1 Spark基础入门

    与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...

Global site tag (gtag.js) - Google Analytics