package day3
object demo_high_func {
def main(args: Array[String]): Unit = {
val list = Array(1,2,3,4,5,6,7,7,7,2,8)
// 过滤数组中的元素, 将为true的元素组合成一个新的数组
val list2 = list.filter(e=>e%2==0)
println(list2.mkString("[",",","]"))
// map函数,对每个元素操作
println("-" * 40 + "map" + "-" * 40)
val list3 = list.map(n=>n * 10)
println(list3.mkString("[",",","]"))
println("-" * 40 + "flatMap" + "-" * 40)
val words = Array("hello you", "hello me", "hello other")
val flist = words.flatMap(word=>word.split(" "))
println(flist.mkString("[",",","]"))
println("-" * 40 + "reduce" + "-" * 40)
//聚合函数, 啥意思看打印结果吧
val relist = list.reduce((a1,a2)=>{
println("v1= " + a1 + ",v2=" +a2)
a1 + a2
})
// 普通写法
val res = list.reduce((v1,v2)=>v1+v2)
//简单写法
val res1 = list.reduce(_ + _)
println(res)
println(res1)
println("-" * 40 + "drowhile" + "-" * 40)
val droplist = list.dropWhile(n=>n!=3)
println(droplist.mkString("[",",","]"))
println("-" * 40 + "sortwith" + "-" * 40)
val newlist = Array(1,3,8,4,-1,7,6,10)
val sortlist = newlist.sortWith((n1,n2)=>n1>n2) // 从大到小排序
val sortlist2 = newlist.sortWith(_ > _) // 简写
println(newlist.mkString("[",",","]"))
println(sortlist.mkString("[",",","]"))
println(sortlist2.mkString("[",",","]"))
println("-" * 40 + "groupby" + "-" * 40)
// 相当于sql中的group by , 返回值为不可变的map类型
val wordmap:Map[String,Array[String]] = flist.groupBy(word => word)
// println(wordmap.mkString("[",",","]"))
wordmap.foreach(kv=>println(kv._1,kv._2.mkString("[",",","]")))
println("-" * 40 + "partition" + "-" * 40)
// 将一个集合分成两个, 能被2整除的放一个集合, 返回两个集合
val(left, right) = newlist.partition(n => n%2==0)
println(left.mkString("[",",","]"))
println(right.mkString("[",",","]"))
}
}
package day3
object demo_high_func {
def main(args: Array[String]): Unit = {
val list = Array(1,2,3,4,5,6,7,7,7,2,8)
// 过滤数组中的元素, 将为true的元素组合成一个新的数组
val list2 = list.filter(e=>e%2==0)
println(list2.mkString("[",",","]"))
// map函数,对每个元素操作
println("-" * 40 + "map" + "-" * 40)
val list3 = list.map(n=>n * 10)
println(list3.mkString("[",",","]"))
println("-" * 40 + "flatMap" + "-" * 40)
val words = Array("hello you", "hello me", "hello other")
val flist = words.flatMap(word=>word.split(" "))
println(flist.mkString("[",",","]"))
println("-" * 40 + "reduce" + "-" * 40)
//聚合函数, 啥意思看打印结果吧
val relist = list.reduce((a1,a2)=>{
println("v1= " + a1 + ",v2=" +a2)
a1 + a2
})
// 普通写法
val res = list.reduce((v1,v2)=>v1+v2)
//简单写法
val res1 = list.reduce(_ + _)
println(res)
println(res1)
println("-" * 40 + "drowhile" + "-" * 40)
val droplist = list.dropWhile(n=>n!=3)
println(droplist.mkString("[",",","]"))
println("-" * 40 + "sortwith" + "-" * 40)
val newlist = Array(1,3,8,4,-1,7,6,10)
val sortlist = newlist.sortWith((n1,n2)=>n1>n2) // 从大到小排序
val sortlist2 = newlist.sortWith(_ > _) // 简写
println(newlist.mkString("[",",","]"))
println(sortlist.mkString("[",",","]"))
println(sortlist2.mkString("[",",","]"))
println("-" * 40 + "groupby" + "-" * 40)
// 相当于sql中的group by , 返回值为不可变的map类型
val wordmap:Map[String,Array[String]] = flist.groupBy(word => word)
// println(wordmap.mkString("[",",","]"))
wordmap.foreach(kv=>println(kv._1,kv._2.mkString("[",",","]")))
println("-" * 40 + "partition" + "-" * 40)
// 将一个集合分成两个, 能被2整除的放一个集合, 返回两个集合
val(left, right) = newlist.partition(n => n%2==0)
println(left.mkString("[",",","]"))
println(right.mkString("[",",","]"))
}
}