zoukankan      html  css  js  c++  java
  • 利用Stream实现简单的等差数列求和

    我们都熟知高斯的故事,认识等差数列也是从这个故事开始的,编程课程为了练习for循环,也在不断的练习这个从1加到100的例子,那么原始的办法是这样的:

    int sum1 = 0;
    for (int i = 1; i <= 100; i++)
    {
        sum1 += i;
    }
    System.out.println(sum1); //5050
    

    但是这个段代码稍显冗长,如果利用流式编程,则会漂亮很多:

    int gaussSum = IntStream.rangeClosed(1, 100).reduce(0, Integer::sum);
    System.out.println("gaussSum=" + gaussSum); //5050
    

    上面这段代码的逻辑是首先生成一个从1到100的等差数列,然后对其进行reduce聚合,结果就出来了。

    或者再进一步,如果要给一个2到100的偶数数列求和,该如何写代码,传统的代码:

    int sum1 = 0;
    for (int i = 2; i <= 100; i+=2)
    {
       sum1 += i;
    }
    System.out.println(sum1); //2550
    

    换成流式编程:

    int gaussSum = IntStream.rangeClosed(1, 100).filter(n -> n%2==0).reduce(0, Integer::sum);
    System.out.println(gaussSum);
    

    这里用到了filter接口,代码也很简单,还有点像Python的range。

  • 相关阅读:
    HRBUST--2317 Game(完全背包)
    k8s的回滚应用
    python练习-2
    k8s HA 补充-(keepalived+haproxy配置)
    Etcd故障恢复记录
    kubernetes 1.14安装部署helm插件
    k8s Prometheus+CAdvisor+node_export+grafana
    k8s ingress部署
    k8s pvc
    k8s pv
  • 原文地址:https://www.cnblogs.com/wingsless/p/13925833.html
Copyright © 2011-2022 走看看