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。

  • 相关阅读:
    Ext 可编辑的GridPanel
    Ext 选项卡面板TabPanel
    Ext 行模型与Grid视图
    Ext——xtype各组件类型
    Ext 面板(Panel)
    Ext 消息框
    Ext OOP基础
    js设计模式——8.中介者模式
    js设计模式——7.备忘录模式
    mysql数据库优化(四)-项目实战
  • 原文地址:https://www.cnblogs.com/wingsless/p/13925833.html
Copyright © 2011-2022 走看看