• 大三寒假学习 spark学习 Scala数据结构


    容器(collection):

      Scala提供了一套丰富的容器(collection)库,包括序列(Sequence)、集合(Set)、映射(Map)等

      根据容器的元素的组织方式和操作方式,可以分未有序的无序的,可变的不可变的等不同的容器类别

      Scala用了三个包来组织容器类,分别是scala.collection 、scala.collection.mutable和scala.collection.immutable。scala.collection包中的容器通常都具备对应的不可变实现和可变实现。

      scala.collection包中容器的宏观层次结构:

      

    列表(List):

      列表: 一种共享相同类型的不可变的对象序列。定义在scala.collection.immutable包中 

      不同于Java的java.util.List,scala的List一旦被定义,其值就不能改变,因此声明List时必须初始化

    • 列表有头部和尾部的概念,可以分别使用head和tail方法来获取
    • head返回的是列表第一个元素的值
    • tail返回的是除第一个元素外的其它值构成的新列表,这体现出列表具有递归的链表结构

      构造列表常用的方法是通过在已有列表前端增加元素,使用的操作符为::,例如:

      val otherList="Apache"::strList

      执行该语句后strList保持不变,而otherList将成为一个新的列表:

           List("Apache","BigData","Hadoop","Spark")

           Scala还定义了一个空列表对象Nil,借助Nil,可以将多个元素用操作符::串起来初始化一个列表

           val intList = 1::2::3::Nil与val intList = List(1,2,3)等效

    集合(set):

      集合(set):不重复元素的容器(collection)。

      列表中的元素是按照插入的先后顺序来组织的,但是,“集合”中的元素并不会记录元素的插入顺序,而是以“哈希”方法对元素的值进行组织,所以,它允许你快速地找到某个元素

      集合包括可变集和不可变集,分别位于scala.collection.mutable包和scala.collection.immutable包,缺省情况下创建的是不可变集

      如果要声明一个可变集,则需要提前引入scala.collection.mutable.Set

       

    映射(map):

      映射(Map):一系列键值对的容器。键是唯一的,但值不一定是唯一的。可以根据键来对值进行快速的检索

      Scala 的映射包含了可变的和不可变的两种版本,分别定义在包scala.collection.mutable 和scala.collection.immutable 里。默认情况下,Scala中使用不可变的映射。如果想使用可变映射,必须明确地导入scala.collection.mutable.Map

       

      如果要获取映射中的值,可以通过键来获取:

      

      对于这种访问方式,如果给定的键不存在,则会抛出异常,为此,访问前可以先调用contains方法确定键是否存在

      

      

       

      

      

       循环遍历映射

      for ( ( k , v ) <- 映射) 语句块

      for((k , v )<- university){printf("Code is : %s and name is %s\n",k,v)}

      也可以只遍历映射中的k或者v  university.keys  university.values

  • 相关阅读:
    Android Broadcast
    Android 向服务器发送XML数据及调用webservice
    Android ViewPager相册横向移动
    Android 启动模式
    SQL Server忘记sa用户密码处理方案
    ArcGIS 10的色带重复问题
    隐藏TabControl中的TabPage
    ArcMap工具箱中的工具不全,工具带有“锁”图标问题
    ArcEngine开发——根据图层名称获取对应图层
    获取本地网络中可用的SQL Server实例信息
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/15768598.html
Copyright © 2020-2023  润新知