大三寒假学习 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

原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/15768598.html