日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2021年大数据常用语言Scala(二十七):函数式编程 聚合操作

發布時間:2023/11/28 生活经验 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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(二十七):函数式编程 聚合操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。