//常用高阶函数
val l=List(1, 2, 3, 4, 5, 6, 7, 8, 9)
l.map(_*2).foreach(println)
l.map(_*2).filter(_>8).foreach(println)
l.fold(0)((sum,i)=>sum+i) //从0开始累加初始值的类型必须是list中元素类型的超类 初始值必须是中立的 对加法来说,中立的值是0;而对于乘法来说则是1
l.foldLeft(0)((sum,i)=>{println(sum,i);sum+i}) //从0开始累加 /:
l.foldRight(0)((sum,i)=>{println(sum,i);sum+i}) //从最后开始累加 :\
l.take(4).foreach(println)//非高阶
println(l.reduce(_+_)) l.reduce((x:Int,y:Int)=>x+y)
println(l.reduce(_-_))
println(l.max)
println(l.count(_>3))
println(l.min)
println(l.sum)
val a=List(1,2,3,4)
val b=List("A","B","C","D")
println(a zip b) //List((1,A), (2,B), (3,C), (4,D))
val c=List("A","B","C","D","E")
println(a zip c) //List((1,A), (2,B), (3,C), (4,D)) 以最小为准
val d=List(1,2,3,4,5)
println(d zip c)
List("zhangsan","lisi","wangwu").zip(List(100,90,75,83))
val f=List(List(1,2),List(3,4),List(5,6))
println(f.flatten) //List(1,2,3,4,5,6)
println(f.flatMap(_.map(_*2))) //List(2, 4, 6, 8, 10, 12)
//综合应用
val l=Liyinyongst(1, 2, 3, 4, 5, 6, 7, 8, 9)
list.map(_.split(" ")).flatten
list.map(_.split(" "))
list.map(_.split(" ")).map(x=>(x,1))
list.map(_.split(" ")).map(x=>(x,1)).groupBy(x=>x._1)
list.map(_.split(" ")).map(x=>(x,1)).groupBy(x=>x._1).map(x=>(x._1,x._2.size))
list.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.size)).foreach(println)
list.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.size)).toList
list.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.size)).toList.map(x=>(x._2,x._1))
list.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.size)).toList.map(x=>(x._2,x._1)).sortBy(x=>x._1*(-1))
list.flatMap(_.split(" ")).map((_,1)).groupBy(_._1).map(x=>(x._1,x._2.size)).toList.map(x=>(x._2,x._1)).sortBy(x=>x._1*(-1)).foreach(println)
//递归
//break
//package com.njbdqn.zb.kb07
import scala.io.StdIn
import scala.util.control.Breaks
object fun {
def main(args: Array[String]): Unit = {
//定义一个函数方式2
// val f1 = (x:Int,y:Int) => x + y
//{参数列表}=>{函数体} 匿名
val x = StdIn.readInt()
for (i<- 1 to x/2){
for(j<- x/2-i to 0 by -1){
print(" ")
}
for (z<- 1 to 2*i-1){
print("*")
}
println()
}
}
//.prt
}