我们都熟知高斯的故事,认识等差数列也是从这个故事开始的,编程课程为了练习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。

利用Stream实现简单的等差数列求和的更多相关文章

  1. 常用函数式接口与Stream API简单讲解

    常用函数式接口与Stream API简单讲解 Stream简直不要太好使啊!!! 常用函数式接口 Supplier<T>,主要方法:T get(),这是一个生产者,可以提供一个T对象. C ...

  2. 学习笔记:利用GDI+生成简单的验证码图片

    学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...

  3. 利用LinkedHashMap实现简单的缓存

    update1:第二个实现,读操作不必要采用独占锁,缓存显然是读多于写,读的时候一开始用独占锁是考虑到要递增计数和更新时间戳要加锁,不过这两个变量都是采用原子变量,因此也不必采用独占锁,修改为读写锁. ...

  4. SoapUI 利用SoapUI进行简单的接口并发测试

    利用SoapUI进行简单的接口并发测试 by:授客 QQ:1033553122 测试环境: SoapUI Pro 5.1.2 步骤如下 1.   把请求添加到测试套件 1.1.     途径1 1.新 ...

  5. WCF利用Stream上传大文件

    WCF利用Stream上传大文件 转自别人的文章,学习这个例子,基本上wcf也算入门了,接口用法.系统配置都有了 本文展示了在asp.net中利用wcf的stream方式传输大文件,解决了大文件上传问 ...

  6. Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...

  7. Python 利用Python编写简单网络爬虫实例2

    利用Python编写简单网络爬虫实例2 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://www.51testing. ...

  8. 利用python进行简单的图像处理:包括打开,显示以及保存图像

    利用python进行简单的图像处理:包括打开,显示以及保存图像 利用PIL处理 PIL(python image library) 是python用于图片处理的package.但目前这个package ...

  9. 0209利用innobackupex进行简单数据库的备份

    利用innobackupex进行简单数据库的备份yum install perl-DBIyum install perl-DBD-MySQLyum install perl-Time-HiResyum ...

  10. 基于《仙剑奇侠传柔情版》利用Java的简单实现(一)

    基于<仙剑奇侠传柔情版>利用Java的简单实现(一) 2018-12-01 23:55:36   by Louis  一,新建一个类GameFrame.class,具体代码如下: pack ...

随机推荐

  1. DotNetGuide荣登GitHub C#中文 Trending 月榜第一

    前言 发现最近有一大批应届生同学和Java转.NET的同学加入了我们的DotNetGuide技术社区交流6群(其他5个群都已满500人,6群也已有340多个小伙伴了)今天看到DotNetGuide荣登 ...

  2. Unity中指定相机截屏,并将图片转为Base64

    问题背景: 需求就是只截场景,不包含UI,并将截图保存为Base64格式给到Web展示. 方案: 指定相机截图: 1 /// <summary> 2 /// 指定相机截屏 3 /// &l ...

  3. SpringBoot中的一些组件

    Redis 引入data-redis-starter <dependency>    <groupId>org.springframework.boot</groupId ...

  4. Java 核心基础之static静态代码块和静态方法

    static静态代码块和静态方法 static关键字 static修饰的方法或变量,优先于对象执行,所以内存会先有static修饰的内容,后有对象的内容 可以用来修饰类的成员方法.类的成员变量,还可以 ...

  5. Spring的xml和注解对比

    常用注解 bean定义 XML方式:<bean></bean> 注解方式:@Component 通用组件 @Controller(web层) @Service(service层 ...

  6. SpringBoot整合模版引擎freemarker实战

    Freemarker相关maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <a ...

  7. Java开发工具和历史版本

    eclipse 的历史版本: 版本代号 平台版本 主要版本发行日期 SR1发行日期 SR2发行日期 SR3发行日期 代号名称 N/A 3.0 2004年6月21日 [2]  N/A N/A N/A N ...

  8. 移动web开发适配秘籍Rem

    目录 移动web开发的特点 Rem 布局适配原理 Media Query(媒体查询) scss 工程使用函数计算 JS动态获取屏幕的宽度 直接将html 的 font-size 设置成 100px 移 ...

  9. oeasy教您玩转vim - 51 - # 读写文件

    读写文件 回忆上节课内容 命令行的光标控制 方向键️️️️️可以控制左右移动 shift+️️️️️按照word左右移动光标 ctrl+b 到开头begin ctrl+e 到结尾end ctrl+w ...

  10. oeasy教您玩转vim - 88 - # 自动命令autocmd

    ​ 自动命令 autocommand 回忆 上次我们研究的是外部命令grep 可以在vim中使用grep 搜索的结果进入了列表 可以打开.遍历.跳转.关闭这个列表 也可以给列表中的匹配行或者每个文件执 ...