1. 程式人生 > >雲星資料---Scala實戰系列(精品版)】:Scala入門教程047-Scala實戰原始碼-Scala method操作

雲星資料---Scala實戰系列(精品版)】:Scala入門教程047-Scala實戰原始碼-Scala method操作

Scala method操作

package scala_learn.demo11_Collection

/**
 * Created by liguohua on 2017/3/1.
 */
object O7_MethodDemo {
  def main(args: Array[String]) {
    test8
  }

  def test8(): Unit = {
    //1100之和:列表.foldLeft(初始元素)(操作函式)
    val r1 = (1 to 100).foldLeft(0)(_ + _)
    println(r1)
    //foldLeft的簡寫
    val r2 = (0
/: (1 to 100))(_ + _) println(r2) //1100之和:列表.foldRight(初始元素)(操作函式) val r3 = (1 to 100).foldRight(0)(_ + _) println(r3) //foldRight的簡寫 val r4 = ((1 to 100) :\ 0)(_ + _) println(r4) } def test7: Unit = { val ls1 = List(List(2, 4, 3), List(2, 4, 3, 9)) //將多個集合合併成一個集合,產生List(2
, 4, 3, 2, 4, 3, 9) //val rs1=ls1.flatMap((l:List[Int])=>{l.map((x:Int)=>{x*2})}) //簡化map中的匿名函式 //val rs1=ls1.flatMap((l:List[Int])=>{l.map(x=>x*2)}) // val rs1=ls1.flatMap((l:List[Int])=>{l.map(_*2)}) //簡化flatMap()中的匿名函式 //val rs1=ls1.flatMap(l=>l.map(_*2)) //第一個_表示ls1
中的每一個List。第二個_表示s1中的每一個List中的每一個元素 val rs1 = ls1.flatMap(_.map(_ * 2)) println(rs1) } def test6: Unit = { val ls1 = List(List(2, 4, 3), List(2, 4, 3, 9)) //將多個集合合併成一個集合,產生List(2, 4, 3, 2, 4, 3, 9) val rs1 = ls1.flatten println(rs1) val ls2 = List(List(2, 4), List(List(2, 4), List(3, 9))) //將多個集合合併成一個集合,產生List(2, 4, List(2, 4), List(3, 9)) val rs2 = ls2.flatten println(rs2) } def test5: Unit = { val ls = List(2, 4, 3, 9, 45, 109) //將一個集合分割成多個集合,產生(List(2, 4),List(3, 9, 45, 109)) val rs = ls.partition(_ % 2 == 0) println(rs) println(rs._1 + "\t" + rs._2) } def test4: Unit = { val ls1 = List(2, 4, 3, 9) val ls2 = List("zhang", "li", "wang") //以ls1為基準進行組合,產生List((2,zhang), (4,li), (3,wang)) val rs1 = ls1.zip(ls2) println(rs1) //以ls2為基準進行組合,產生List((zhang,2), (li,4), (wang,3)) val rs2 = ls2.zip(ls1) println(rs2) } def test3: Unit = { val ls = List(2, 4, 3, 45, 109) //filter是為了過濾符合條件的元素, //val rs = ls.filter((x:Int)=>{x%2!=0}) //函式體只有一句,{}可以省略 //val rs = ls.filter((x: Int) => x % 2 != 0) //引數只有一個,型別可以省略 //val rs = ls.filter((x) => x % 2 != 0) //引數只有一個,()可以省略 //val rs = ls.filter(x => x % 2 != 0) //引數只有一個,使用萬用字元 val rs = ls.filter(_ % 2 != 0) //List中的元素是不可變的 println(ls) //將產生一個新的List println(rs) } def test2: Unit = { val ls = List(2, 4, 3, 45, 109) //map類似於foreach,不同的在於它有返回值, //val rs = ls.map((x:Int)=>x * 2) //var rs = ls.map(x => x * 2) val rs = ls.map(_ * 2) //List中的元素是不可變的 println(ls) //將產生一個新的List println(rs) } def test1: Unit = { val ls = List(2, 4, 3, 45, 109) //var rs=ls.foreach((x:Int)=>x*2) //var rs = ls.foreach(x => x * 2) var rs = ls.foreach(_ * 2) //List中的元素是不可變的 println(ls) //foreach不會引數返回值 println(rs) } }