Scala笔记整理(六):Scala集合库

  (TOC)

  <人力资源/>   

Scala主要集合结构

  

1, Scala中的集合体系主要包括:<代码> Iterable ,<代码> Seq (IndexSeq) ,<代码>设置(SortedSet) ,<代码>地图(SortedMap)>   

      <李>   

      

    是一个有先后次序的值的序列,比如数组或列表.IndexSeq允许我们通过×××的下表快速的访问任意元素。举例来说,ArrayBuffer是带下标的,但是链表不是。

      李   <李>   组

      

    是一组没有先后次序的值。在SortedSet中,元素以某种排过序顺序被访问。

      李   <李>   

    地图   

    是一组(键值)对偶.SortedMap按照键的排序访问其中的实体。

      李   
  

2, Scala中的集合是分成可变和不可变两类集合的,其中可变集合就是说,集合的元素可以动态修改,而不可变集合的元素在初始化之后,就无法修改了。分别对应<代码> scala.collection.mutable 和<代码> scala.collection.immutable>   

3, Seq下包含了<代码> ,<代码> ArrayBuffer ,<代码> 等列表子特征。其范围中就代表了一个序列,通常可以使用“1到”这种语法来产生一个范围。ArrayBuffer就类似于Java中的ArrayList。

  

列表   

常列表用操作1

  

1,在Scala中,列表要么是Nil(及空表),要么是一个头元素加上一个尾巴,而尾巴又是一个列表

  
 <代码> scala>val列表=(1、2、3、4、5)
  列表:列表(Int)=(1、2、3、4、5)
  
  scala>list.head
  res29: Int=1
  
  scala>list.tail
  res30:列表(Int)=(2、3、4、5)
  
  scala>list.isEmpty
  res31:布尔=false
  
  scala>==Nil列表
  res32:布尔=false  
  

下面是一个使用递归求集列表合中和的例子:

  
 <代码> def递归(列表:列表(Int)): Int={
  如果(list.isEmpty) {
  返回0//使用回显式结束程序的运行,否则0只是该如果语句的返回值,并不会结束程序的运行,当然如果用其他不用回也行
  }
  列表。头+递归(list.tail)
  } 
  

常列表用操作2

  
增加
  
 <代码>//增/* a + + (B)——比;在列表一的尾部对添加另外一个列表B组成一个新的列的表
  * + +:(B)——比;在列表一的首部对添加另外一个列表B组成一个新的列的表
  *。:::(B)——比;在列表一的首部对添加另外一个列表B组成一个新的列的表
  * - - - - - -
  *。:+(元素)——在在列表一的尾部添加一个元素,组成一个新的集合
  *。+:(元素)——在在列表一的首部添加一个元素,组成一个新的集合
  *。::(元素)——在在列表一的首部添加一个元素,组成一个新的集合
  */ 
  

测试如下:

  
 <代码> scala>val左=列表(1、2、3、4)
  左:列表(Int)=(1、2、3、4)
  
  scala>val右=名单(5、6、7)
  右:列表(Int)=(5、6、7)
  
  scala>离开。+ +(右)
  res33:列表(Int)=(1、2、3、4、5、6、7)
  
  scala>左+ +:(右)
  res34:列表(Int)=(5、6、7、1、2、3、4)
  
  scala>离开。:::(右)
  res35:列表(Int)=(5、6、7、1、2、3、4)
  
  scala>左:+ (10)
  res36:列表(Int)=(1、2、3、4、10)
  
  scala>离开。+:(10)
  res38:列表(Int)=(10, 1、2、3、4)
  
  scala>离开。::(10)
  res39:列表(Int)=(10, 1、2、3、4)  
  
删除
  
 <代码>下降(n)——→删除列表的前n个元素(首部开始删除)
  dropRight (n)——→删除列表的后n个元素(尾部开始删除)
  dropWhile (p:=比;布尔)——→逐个匹配去除符合条件的元素,直到不符合条件,之后的元素不再判断 
  

测试如下:

  
 <代码> scala>val列表=(1、2、3、4、5、6、7)
  列表:列表(Int)=(1、2、3、4、5、6、7)
  
  scala>list.drop (2)
  res52:列表(Int)=(3、4、5、6、7)
  
  scala>list.dropRight (3)
  res53:列表(Int)=(1、2、3、4)
  
  scala>列表。dropWhile (_ & lt;=3)
  res54:列表(Int)=(4、5、6、7)
  
  scala>列表。dropWhile(_比;3)//第一个元素就不符合条件,后面的不再判断,所以一个也没有删除
  res55:列表(Int)=(1、2、3、4、5、6、7)  
  
修改与查询h5> <代码> scala>val列表=(1、2、3、4、5、6、7)   列表:列表(Int)=(1、2、3、4、5、6、7)      scala>列表(0)   res57: Int=1      scala>列表(0)=10   & lt; console>: 9:错误:价值更新的不是一个成员列表(Int)   列表(0)=10   ^

Scala笔记整理(六):Scala集合库