scala中的高阶函数

高阶函数

  1. val list =List(1,2,3,4,5,6,7,8)
  2. val newList = list.map((x:Int) => 2*x) //map表示映射list中的每一个元素的值为原来的2倍
  3. //newList中的值为
  4. 2,4,6,8,10,12,14,16
  5. 也可直接写成
  6. val newList = list.map(x => 2*x)
  7. 也可等价写成
  8. val newList = list.map(2*_)

map函数相当于foreach

集合Set

  1. val s = Set(1,2,1)
  2.  
  3. //则s中的结构为
  4. s = Set(1,2)

集合元组

  1. val hostPort = ("localhost","8080")
  2.  
  3. //则hostPort中的结构为
  4. hostPort: (String,String) = (localhost,8080)

访问元组中的元素

  1. hostPort._1
  2. //输出结果为
  3. localhost
  1. //通过下面的方式也可以产生一个元组
  2. "a" -> "b"
  3.  
  4. //元组的结构为
  5. (String,String) = (a , b)
  6. //产生一个Map
  7. Map("a" -> "b")
  8.  
  9. //该map的结构为
  10. Map(String,String) = Map(a -> b)

filter的使用

  1. val list = List(1,2,3,4,5,6)
  2. list.filter(x => x%2==0) //择取偶数
  3. //结果为
  4. List(2,4,6)

zip的使用

  1. val a = List(1,2,3)
  2. val b = List(4,5,6)
  3. a.zip(b) //使a中的元素与b中对应位置的元素配成对,也可写成 a zip b
  4. //结果为
  5. List[(Int,Int)] = List((1,4),(2,5),(3,6))

partition的使用,将一个集合分割成子集合

  1. //把奇数和偶数分隔开
  2. val a = List(1,2,3,4,5,6)
  3. a.partition(_%2==0)
  4. //结果为
  5. (List[Int],List[Int])= (List(2,4,6),List(1,3,5))

flatten的使用,扁平化

  1. val a = List(List("a","b"),List("c","d")).flatten
  2. //结果为
  3. List[String] = List(a,b,c,d)

flatMap = flat + map(扁平化+ 遍历)

  1. var a = List(list(1,2),List(3,4))
  2. a.flatMap(x => x.map(_ * 2)) //先将a扁平化,然后遍历(map),即将扁平后的每一个元素放入x中,然后乘以2
  3. //结果为
  4. Lsit[Int] = List(2,4,6,8)
原文地址:https://www.cnblogs.com/wyhuang/p/3918607.html