1、定义一个高阶函数,按照指定的规则对集合里面的每个元素进行操作
比如: Array(“hh”,“red”,“java”,“hadoop”)
规则: 对集合中每个元素进行操作,得到集合每个元素的长度
def zfcd[A, B](data: Seq[A], i: A => B): Seq[B] = {data.map(i)}
def cd(str: String): Int = str.length
val a = Array("hh", "red", "java", "hadoop")
println(zfcd(a,cd))
2、定义一个高阶函数,对数据中的元素按照指定的规则进行过滤
比如: Array(1,4,7,9,10,6,8,99,88,66)
规则: 只保留偶数数据
def os[A](data: Seq[A], isEven: A => Boolean): Seq[A] = {data.filter(isEven)}
def oushu(n: Int): Boolean = n % 2 == 0
val b = Array(1, 4, 7, 9, 10, 6, 8, 99, 88, 66)
println(os(b, oushu))
3、对数据中的元素按照指定规则进行分组
比如:Array(“zhangsan shenzhen man”,“lisi beijing woman”,“zhaoliu beijing man”)
规则: 按照地址进行分组
def main(args: Array[String]): Unit = {
def dz(data: Seq[String]): Map[String, Seq[String]] = {
data.groupBy { person =>
val parts = person.split("\\s+")
if (parts.length >= 2) parts(1) else "no"
}
}
val c = Array("zhangsan shenzhen man", "lisi beijing woman", "zhaoliu beijing man")
val dz1 = dz(c)
println(dz1)
4、根据指定规则对数组所有元素聚合
比如:Array(10,4,6,10,2)
规则: 求和/求乘积
val d = Array(10, 4, 6, 10, 2)
val s = d.reduce(_+_)
println(s)
val cj = d.reduce(_*_)
println(cj)