拉链扩展
zip函数将传进来的两个参数中对应位置上的元素组成一个pair数组,如果其中一个参数元素比较长,那么多余的参数会被删除
zipAll函数和zip函数类似,但是如果其中一个元素的个数比较少,那么江永默认的元素填充
zipWithIndex函数将元素和其所在的位置索引组成一个pair
该方法把集合中每个元素和该元素的索引进行一个拉链操作
upzip函数可以键一个元组的列表转换成一个列表的元组
列表List
列表中的元素类型不可以不同
列表是有序的
不可变列表
不可变列表的构造
不可变的序列,import scala.collection.immutable._
空列表 可以使用Nil构建一个空列表 val empty = Nil 也可以使用空元素构建一个空列表 val empty : List[Nothing] = List() val fruit=List("apples","oranges","pears") val dig3 = List( List(1,0,0), List(0,1,0), List(0,0,1) ) val empty =List() 所有的列表可以看做是有两个基础构造块Nil和中缀操作符::构成 ,::表示从列表前段扩展 在scala中流标要么为空(Nil表示空列表)要么是一个head元素加上一个tail列表 9 ::List(5,2) :: 操作符是将给定的头和尾创建一个新的列表 注意: ::操作符是右结合的,如 9 :: 5 :: 2 :: Nil相当于9 :: (5 ::(2 ::Nil)) val fruit ="apples" :: ("organes" :: ("pears" :: Nil)) val diag3 = (1 :: (0 :: (0 :: Nil))) :: (0 :: (1 :: (0 :: Nil))) :: (0 :: (0 :: (1 :: Nil))) :: Nil val nums=1::(2::(3::(4::Nil))) val nums = 1 :: 2 :: 3 :: 4 会报错 val nums =1 :: 2 :: 3 :: 4 :: list0 :: Nil 列表中的元素可以是不同类型
列表的访问
val nums = 1 :: 2 :: 3 :: 4 :: list0 :: Nil nums(1) nums(3)
列表的遍历
单个集合的各种遍历方式 val lst = List(1,2,3,4,5) list.foreach{x=>print(x+",")} foreach遍历,传统遍历方式 var temp = list.map{ x => x+1} 与foreach的区别是返回值为List var temp =lst.reduceLeft((sum,i)->sum +i) 返回值类型是一个与集合相同的Int var temp2 =lst.foldLeft(List[Int]())((x,y)=>x::y) 返回值是自定义类型 fold类函数还可以写成 : \ , / : 代码精简不少,但是可读性降低了 var temp3 = (List[Int]()/:lst){(m,c)=?c::m} 实现反转
列表的追加
创建一个不可变集合 val lst1 = List(1,2,3) 将0插入到lst1前面生成一个新的list :: 和 +: 右结合 :: 为右结合操作符 将元素追加到集合开头 val lst2 = 0 :: lst1 val lst3 = lst1.::(0) val l