[TOC]
# 函数式编程
| 编程范式 | 说明 | 技术边界 | 技术范围 |
| --- | --- | --- | --- |
| 函数式编程 | 函数式编程是一种基于函数的编程模式,将函数视为一等公民,可以作为参数、返回值、变量等进行传递和处理。通过高阶函数、Lambda表达式、Stream API等机制实现代码的简洁性和可读性。 | Java Lambda表达式、Stream API、函数式接口 | Java编程语言 |
~~~
// 例子:使用Lambda表达式和Stream API对列表进行操作
import java.util.ArrayList;
import java.util.List;
public class LambdaExample {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
// 使用Lambda表达式和Stream API对列表进行操作
int sum = list.stream().filter(i -> i > 1).mapToInt(i -> i *2).sum();
System.out.println(sum); // 输出6
}
}
~~~
## 1 高阶函数
|特征|说明|示例|
|:--|:--|:--|
|函数作为参数|将函数作为参数传递给其他函数|Comparator<T> comparator|
|函数作为返回值|函数的返回值是一个函数|public Function<T, R> compose(Function before)|
高阶函数使得Java具有函数式编程的能力,提高了代码的灵活性和可复用性。
## 2 Lambda表达式
|特征|说明|语法|示例|
|:--|:--|:--|:--|
|匿名函数|没有函数名的函数|(parameters) -> expression;(参数)->表达式;|(x, y) -> x + y|
|推断类型|根据上下文推断Lambda表达式的参数和返回类型|无需指定类型,编译器自动推断。示例代码中Lambda表达式x -> System.out.println(x)的参数类型x由forEach方法的列表元素类型String对象推断得到。|List<String> list = Arrays.asList("a", "b", "c");list.forEach(x -> System.out.println(x));|
|局部变量访问|Lambda表达式可以访问定义它的代码块中的局部变量|要求局部变量为final或事实上是final的。在示例中,Lambda表达式() -> {System.out.println(x);}可以访问外部代码块中定义的局部变量x。|int x = 10; Runnable r = () -> { System.out.println(x); };r.run(); // 输出10 |
Lambda表达式使Java支持简洁的函数式编程,极大提高了代码可读性。
## 3 Stream API
|特征|说明|方法|示例|
|:--|:--|:--|:--|
|聚合操作|对Stream中元素执行聚合计算,得到单个值|count、max、min、average等|list.stream().count()|
|过滤|返回一个Stream中元素的子集|filter|list.stream().filter(x -> x > 10)|
|映射|将Stream中元素进行转化映射成新的Stream|map|list.stream().map(x -> x * 2)|
|排序|对Stream中的元素进行排序|sorted|list.stream().sorted()|
|匹配|判断Stream中是否有元素匹配某个条件|anyMatch、allMatch、noneMatch|list.stream().anyMatch(x -> x > 10)|
Stream API基于Lambda表达式,提供了比迭代器更强大的聚合、过滤、映射和匹配等函数式操作的Stream抽象,极大提高了Java程序的开发效率。
- 系统设计
- 需求分析
- 概要设计
- 详细设计
- 逻辑模型设计
- 物理模型设计
- 产品设计
- 数据驱动产品设计
- 首页
- 逻辑理解
- 微服务架构的关系数据库优化
- Java基础架构
- 编程范式
- 面向对象编程【模拟现实】
- 泛型编程【参数化】
- 函数式编程
- 响应式编程【异步流】
- 并发编程【多线程】
- 面向切面编程【代码复用解耦】
- 声明式编程【注解和配置】
- 函数响应式编程
- 语法基础
- 包、接口、类、对象和切面案例代码
- Springboot按以下步骤面向切面设计程序
- 关键词
- 内部类、匿名类
- 数组、字符串、I/O
- 常用API
- 并发包
- XML
- Maven 包管理
- Pom.xml
- 技术框架
- SpringBoot
- 项目文件目录
- Vue
- Vue项目文件目录
- 远程组件
- 敏捷开发前端应用
- Pinia Store
- Vite
- Composition API
- uniapp
- 本地方法JNI
- 脚本机制
- 编译器API
- 注释
- 源码级注释
- Javadoc
- 安全
- Swing和图形化编程
- 国际化
- 精实或精益
- 精实软件数据库设计
- 精实的原理与方法
- 项目
- 零售软件
- 扩展
- 1001_docker 示例
- 1002_Docker 常用命令
- 1003_微服务
- 1004_微服务数据模型范式
- 1005_数据模型
- 1006_springCloud
- AI 流程图生成
- Wordpress_6
- Woocommerce_7
- WooCommerce常用的API和帮助函数
- WooCommerce的钩子和过滤器
- REST API
- 数据库API
- 模板系统
- 数据模型
- 1.Woo主题开发流程
- Filter
- Hook
- 可视编辑区域的函数工具
- 渲染字段函数
- 类库和框架
- TDD 通过测试来驱动开发
- 编程范式对WordPress开发
- WordPress和WooCommerce的核心代码类库组成
- 数据库修改
- 1.WP主题开发流程与时间规划
- moho
- Note 1
- 基础命令