[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
- 基礎命令