2021年大数据常用语言Scala(二十七):函数式编程 聚合操作
目錄
聚合操作
聚合? reduce
定義
案例
折疊? fold
定義
案例
聚合操作
聚合操作,可以將一個列表中的數據合并為一個。這種操作經常用來統計分析中
?
聚合? reduce
reduce表示將列表,傳入一個函數進行聚合計算
?
定義
方法簽名
def?reduce[A1 >:?A](op:?(A1,?A1)?? A1):?A1
方法解析
| reduce方法 | API | 說明 |
| 泛型 | [A1 >: A] | (下界)A1必須是集合元素類型的子類 |
| 參數 | op: (A1, A1) ? A1 | 傳入函數對象,用來不斷進行聚合操作<br />第一個A1類型參數為:當前聚合后的變量<br />第二個A1類型參數為:當前要進行聚合的元素 |
| 返回值 | A1 | 列表最終聚合為一個元素 |
reduce執行流程分析
?
[!NOTE]
- reduce和reduceLeft效果一致,表示從左到右計算
- reduceRight表示從右到左計算
案例
定義一個列表,包含以下元素:1,2,3,4,5,6,7,8,9,10
使用reduce計算所有元素的和
參考代碼
scala>?val?a =?List(1,2,3,4,5,6,7,8,9,10)
a:?List[Int]?=?List(1,?2,?3,?4,?5,?6,?7,?8,?9,?10)scala>?a.reduce((x,y)?=>?x +?y)
res5:?Int?=?55// 第一個下劃線表示第一個參數,就是歷史的聚合數據結果
// 第二個下劃線表示第二個參數,就是當前要聚合的數據元素
scala>?a.reduce(_ +?_)
res53:?Int?=?55// 與reduce一樣,從左往右計算
scala>?a.reduceLeft(_ +?_)
res0:?Int?=?55// 從右往左聚合計算
scala>?a.reduceRight(_ +?_)
res1:?Int?=?55
?
折疊? fold
fold與reduce很像,但是多了一個指定初始值參數
?
定義
方法簽名
def?fold[A1 >:?A](z:?A1)(op:?(A1,?A1)?? A1):?A1
方法解析
| reduce方法 | API | 說明 |
| 泛型 | [A1 >: A] | (下界)A1必須是集合元素類型的子類 |
| 參數1 | z: A1 | 初始值 |
| 參數2 | op: (A1, A1) ? A1 | 傳入函數對象,用來不斷進行折疊操作<br />第一個A1類型參數為:當前折疊后的變量<br />第二個A1類型參數為:當前要進行折疊的元素 |
| 返回值 | A1 | 列表最終折疊為一個元素 |
?
[!NOTE]
- fold和foldLet效果一致,表示從左往右計算
- foldRight表示從右往左計算
案例
定義一個列表,包含以下元素:1,2,3,4,5,6,7,8,9,10
使用fold方法計算所有元素的和
參考代碼
scala>?val?a =?List(1,2,3,4,5,6,7,8,9,10)
a:?List[Int]?=?List(1,?2,?3,?4,?5,?6,?7,?8,?9,?10)scala>?a.fold(0)(_ +?_)
res4:?Int?=?155
?
總結
以上是生活随笔為你收集整理的2021年大数据常用语言Scala(二十七):函数式编程 聚合操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据常用语言Scala(二十
- 下一篇: 2021年大数据常用语言Scala(二十