scala入门之高阶函数案例
基于Java学习scala
- 高阶函数练习案例
- 1、定义一个高阶函数,按照指定的规则对集合里面的每个元素进行操作
- 2、定义一个高阶函数,按照指定的规则对集合中的所有元素进行聚合
- 3、定义一个高阶函数,按照指定的规则获取指定元素
- 4、定义一个高阶函数,按照指定的规则对数据进行分组
- 5、定义一个高阶函数,按照指定的规则对数据进行过滤,保留符合要求的数据
高阶函数练习案例
1、定义一个高阶函数,按照指定的规则对集合里面的每个元素进行操作
//比如: 对集合中每个元素进行操作,得到集合每个元素的长度def main(args: Array[String]): Unit = {val arr = Array[String]("java", "python", "scala", "idea")println(map(arr, _.length).toBuffer)}def map(arr: Array[String], operator: String => Int) = {for (item <- arr) yield {operator(item)}}
2、定义一个高阶函数,按照指定的规则对集合中的所有元素进行聚合
//比如:求得集合中的所有元素的和def main(args: Array[String]): Unit = {val arr = Array[Int](1, 2, 3, 4, 5, 6, 7, 8, 9, 10)println(reduce(arr, _ + _))println(reduce(arr, _ * _))}def reduce(arr: Array[Int], func: (Int, Int) => Int) = {var tmp = arr(0)for (i <- 1 until arr.length) {tmp = func(tmp, arr(i))}tmp}
3、定义一个高阶函数,按照指定的规则获取指定元素
//比如,获取年龄最大的def main(args: Array[String]): Unit = {val arr = Array("zhangsan 20 3000", "fang 28 20000", "yire 15 90000")println(sortBy(arr, _.split(" ")(1).toInt))println(sortBy(arr, _.split(" ")(2).toInt))}def sortBy(arr: Array[String], func: (String) => Int) = {var tmp = func(arr(0))var result = arr(0)for (i <- 1 until arr.length) {val arrRes = func(arr(i))if (arrRes > tmp) {tmp = arrResresult = arr(i)}}result}
4、定义一个高阶函数,按照指定的规则对数据进行分组
//比如,按照性别分组def main(args: Array[String]): Unit = {val arr = Array[String]("zhangsan 男 深圳", "lisi 女 深圳", "王五 男 北京")println(sortBy1(arr, _.split(" ")(1)))println(sortBy1(arr, _.split(" ")(2)))println(sortBy2(arr, _.split(" ")(1)))println(sortBy2(arr, _.split(" ")(2)))}//java的类来实现def sortBy1(arr: Array[String], func: String => String) ={val result = new util.HashMap[String, util.ArrayList[String]]for (elem <- arr) {val key = func(elem)if (result.containsKey(key)) {result.get(key).add(elem)} else {val list = new util.ArrayList[String]()list.add(elem)result.put(key, list)}}result}//scala的类实现def sortBy2(arr: Array[String], func: String => String) ={var result = Map[String, ArrayBuffer[String]]()for (elem <- arr) {val key = func(elem)if (result.contains(key)) {result(key) += elem} else {val list = ArrayBuffer[String]()list += elemresult += (key -> list)}}result}
5、定义一个高阶函数,按照指定的规则对数据进行过滤,保留符合要求的数据
//比如,过滤出偶数def main(args: Array[String]): Unit = {val arr = Array[Int](10, 2, 4, 6, 1, 81, 13)println(filter(arr, _ % 2 == 0).toBuffer)println(filter(arr, _ % 3 == 0).toBuffer)}def filter(arr: Array[Int], func: Int => Boolean) = {for (elem <- arr if func(elem)) yield {elem.toInt}}
scala入门之高阶函数案例相关推荐
- scala中的高阶函数_Scala中的高阶函数(HOF)
scala中的高阶函数 Higher Order Functions (HOF) in Scala are the very core of this functional programming l ...
- 2021年大数据常用语言Scala(三十七):scala高级用法 高阶函数用法
目录 高阶函数用法 作为值的函数 匿名函数 柯里化(多参数列表) 闭包 高阶函数用法 Scala 混合了面向对象和函数式的特性,在函数式编程语言中,函数是"头等公民",它和Int. ...
- Scala中的高阶函数
Scala混合了面向对象和函数式的特性.在函数式编程语言中,函数是"头等公民",可以像任何其他数据类型一样被传递和操作.每当你想要给算法传入明细动作时这个特性就会变得非常有用.在函 ...
- Scala入门到精通——第十三节 高阶函数
本节主要内容 高阶函数简介 Scala中的常用高阶函数 SAM转换 函数柯里化 部分应用函数 1. 高阶函数简介 高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数):另外一种是返 ...
- 【Scala之旅】高阶函数
本节翻译自 Type Inference Higher-order Functions Nested Methods Multiple Parameter Lists (Currying) 综述:Sc ...
- Scala高阶函数详解
概述 高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数):另外一种是返回值是函数的函数. 用函数作为形参或返回值的函数,称为高阶函数. (1)使用函数作为参数 //函数参数,即传 ...
- Scala入门到精通——第五节 函数、高阶函数与闭包
本节主要内容 (一)函数字面量(值函数) (二)匿名函数 (三)函数的简化 (四)函数参数 (四)闭包 函数字面量(值函数) 函数字面量(function literal),也称值函数(functio ...
- 【Scala】使用Scala语言对匿名函数、高阶函数的定义以及详细解释(代码加注解)
下面是匿名函数以及高阶函数相结合使用的代码: object FunDemo3 {/*** 匿名函数.高阶函数*/def main(args: Array[String]): Unit = {val a ...
- Scala 高阶函数(作为值的函数、匿名函数、闭包、柯里化)+隐式转换和隐式参数...
Scala高级特性 1. 学习目标 1.1. 目标一:深入理解高阶函数 1.2. 目标二:深入理解隐式转换 2. 高阶函数 2.1. 概念 Scala混合了面向对象和函数式的特 ...
最新文章
- Matlab人脸检测算法详解
- 其原因可能是堆被损坏,这也说明 xxx.exe 中或它所加载的任何 DLL 中有 bug
- Delegate和Command Pattern
- 第十七届全国大学生智能车竞赛开始啦
- SpringBoot使用JdbcTemplate
- 华为云计算之存储的分类
- sshpass做秘钥分发,ansible做自动化运维工具
- 位图像素的颜色 携程编程大赛hdu
- javascript创建类_如何在10分钟内使用JavaScript创建费用管理器
- python删除txt文件第三行_真香!Python十大常用文件操作,轻松办公
- 开关造成的毛刺_LED射灯开关关了为什么还会闪
- Redis3.2.5 集群搭建以及Spring-boot测试
- linux内核编译选项ccl,嵌入式Linux学习笔记(一)
- Spark Streaming的Receiver和Direct容错方式
- 信息图:iOS 7开发者需要知道的事
- openresty入门与配置了解
- 数据结构之红黑树简介
- 物联网技术体系(一)
- html 苹果手机输入法,苹果手机搜狗输入法怎么计算字数?
- 程序员能力的四个境界(转)