FP大串烧:SQL,LINQ,F#以及STL(2)

53 篇文章 14 订阅
18 篇文章 0 订阅

Aggregate(Count)

聚合(计数)

  • 计数操作用于统计原始集合中符合某种条件的成员的个数,结果值为整数。
    计数操作在各语言中的实现方式如下表所示:

     Count
    SQL(SELECT)COUNT函数
    C#(LINQ)Count扩展方法
    F#(List)由List.filter和List.Length函数联合实现
    C++(STL)count, count_if等算法函数
    Haskell(Prelude)由filter和length函数联合实现
    Java8(stream)由filter和count方法联合实现

    以下示例代码功能为:统计整形集合numbers中奇数成员的个数。
  • SQL(SELECT)
  • C#(LINQ)
  • F#(List)
  • STL(C++)
  • Haskell(Prelude)
  • Java8(stream)

Aggregate(Sum)

聚合(求和)

  • 求和操作用于计算原始集合中各成员的总和,结果类型与原始集合成员类型相同。
    求和操作在各语言中的实现方式如下表所示:

     Sum
    SQL(SELECT)SUM函数
    C#(LINQ)Sum扩展方法
    F#(List)List.sum, List.sumBy等函数
    C++(STL)accumulate算法函数
    Haskell(Prelude)sum函数
    Java8(stream)sum方法

    以下示例代码功能为:计算整形集合numbers中各成员的总和。
  • SQL(SELECT)
  • C#(LINQ)
  • F#(List)
  • STL(C++)
  • Haskell(Prelude)
  • Java8(stream)

Aggregate(Min)

聚合(求最小值)

  • 求最小值操作用于找出原始集合中最小的成员,结果类型与原始集合成员类型相同。
    求最小值操作在各语言中的实现方式如下表所示:

     Min
    SQL(SELECT)MIN函数
    C#(LINQ)Min扩展方法
    F#(List)List.min, List.minBy等函数
    C++(STL)min_element算法函数
    Haskell(Prelude)minimum, minimumBy等函数
    Java8(stream)min方法

    以下示例代码功能为:找出整形集合numbers中最小的成员。
  • SQL(SELECT)
  • C#(LINQ)
  • F#(List)
  • STL(C++)
  • Haskell(Prelude)
  • Java8(stream)

Aggregate(Max)

聚合(求最大值)

  • 求最大值操作用于找出原始集合中最大的成员,结果类型与原始集合成员类型相同。
    求最大值操作在各语言中的实现方式如下表所示:

     Max
    SQL(SELECT)MAX函数
    C#(LINQ)Max扩展方法
    F#(List)List.max, List.maxBy等函数
    C++(STL)max_element算法函数
    Haskell(Prelude)
    maximum, maximumBy等函数
    Java8(stream)max方法

    以下示例代码功能为:找出整形集合numbers中最大的成员。
  • SQL(SELECT)
  • C#(LINQ)
  • F#(List)
  • STL(C++)
  • Haskell(Prelude)
  • Java8(stream)

Aggregate(Average)

聚合(求平均值)

  • 求平均值操作用于计算原始集合中各成员的平均值,结果类型与原始集合成员类型相同。
    求平均值操作在各语言中的实现方式如下表所示:

     Average
    SQL(SELECT)AVG函数
    C#(LINQ)Average扩展方法
    F#(List)List.average, List.averageBy等函数
    C++(STL)无对应算法函数,由accumulate算法函数间接实现
    Haskell(Prelude)由sum和genericLength函数联合实现
    Java8(stream)average方法

    以下示例代码功能为:计算整形集合numbers中各成员的平均值。
  • SQL(SELECT)
  • C#(LINQ)
  • F#(List)
  • STL(C++)
  • Haskell(Prelude)
  • Java8(stream)

Aggregate(Simple)

简单聚合

  • 简单聚合操作。
    简单聚合操作在各语言中的实现方式如下表所示:

     Aggregate(Simple)
    SQL(SELECT)无对应函数
    C#(LINQ)Aggregate扩展方法
    F#(List)List.reduce, List.reduceBack等函数
    C++(STL)accumulate算法函数
    Haskell(Prelude)foldl1, foldr1等函数
    Java8(stream)reduce方法

    以下示例代码功能为:计算双精度浮点数集合doubles中所有成员的积。
  • SQL(SELECT)
  • C#(LINQ)
  • F#(List)
  • C++(STL)
  • Haskell(Prelude)
  • Java8(stream)

Aggregate(Seed)

带种子的聚合

  • 带种子的聚合操作。
    带种子的聚合操作在各语言中的实现方式如下表所示:

     Aggregate(Simple)
    SQL(SELECT)无对应函数
    C#(LINQ)Aggregate扩展方法
    F#(List)List.fold, List.foldBack等函数
    C++(STL)accumulate算法函数
    Haskell(Prelude)foldl, foldr等函数
    Java8(stream)reduce方法

    以下示例代码功能为:从账户中扣除提款额(忽略大于存款的提款项目),计算账户余额。
  • SQL(SELECT)
  • C#(LINQ)
  • F#(List)
  • C++(STL)
  • Haskell(Prelude)
  • Java8(stream)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值