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。

  • 相关阅读:
    HDU 1060 Leftmost Digit
    HDU 1008 Elevator
    HDU 1042 N!
    HDU 1040 As Easy As A+B
    HDU 1007 Quoit Design
    欧拉函数
    HDU 4983 Goffi and GCD
    HDU 2588 GCD
    HDU 3501 Calculation 2
    HDU 4981 Goffi and Median
  • 原文地址:https://www.cnblogs.com/wingsless/p/13925833.html
Copyright © 2011-2022 走看看