Java8Stream
判断一个操作是惰性求值还是及早求值很简单:只需看它的返回值。如果返回值是 Stream,那么是惰性求值。其实可以这么理解,如果调用惰性求值方法,Stream 只是记录下了这个惰性求值方法的过程,并没有去计算,等到调用及早求值方法后,就连同前面的一系列惰性求值方法顺序进行计算,返回结果。
通用形式为:
Stream.惰性求值.惰性求值. ... .惰性求值.及早求值。
Stream是java.util.stream的一个类。
public class StudyStream {
private List<HeroEntity> list;
@Before
public void init(){
list = new ArrayList<>();
list.add(new HeroEntity("影魔","敏捷"));
list.add(new HeroEntity("QOP","智力"));
list.add(new HeroEntity("德鲁伊","敏捷"));
list.add(new HeroEntity("矮人狙击手","敏捷"));
list.add(new HeroEntity("幻影刺客","敏捷"));
list.add(new HeroEntity("撼地神牛","力量"));
}
@Test
public void filterAGI() throws InterruptedException {
/**
* List对象调用stream()将会放回一个Stream<E>对象,
* Steam对象调用filter(lambda表达式)会返回一个Steam对象,
* Steam对象.collect(Collectors.toList())返回一个List<E>
*/
List<HeroEntity> listAGI = list.stream()
.filter(l -> {
return l.getProperty().equals("敏捷"));//注意这里的return,相当于是一个函数了,只终止l -> {函数} 中的函数,所以下面的listAGI.forEach正常执行
}
.collect(Collectors.toList());
listAGI.forEach(l -> System.out.println(l.toString()));
}
}
输出结果如下:
HeroEntity[name=影魔,property=敏捷,super.toString()=com.study.test.all.java8function.HeroEntity@2da6452]
HeroEntity[name=德鲁伊,property=敏捷,super.toString()=com.study.test.all.java8function.HeroEntity@574c0a81]
HeroEntity[name=矮人狙击手,property=敏捷,super.toString()=com.study.test.all.java8function.HeroEntity@24cc03b0]
HeroEntity[name=幻影刺客,property=敏捷,super.toString()=com.study.test.all.java8function.HeroEntity@3af4a3ab]
参考来源:“https://www.cnblogs.com/snowInPluto/p/5981400.html”
Java8Stream的更多相关文章
- java8--stream
*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...
- java8-Stream集合操作快速上手
java8-Stream集合操作快速上手 目录 Stream简介 为什么要使用Stream 实例数据源 Filter Map FlatMap Reduce Collect Optional 并发 ...
- java8Stream原理深度解析
Java8 Stream原理深度解析 Author:Dorae Date:2017年11月2日19:10:39 转载请注明出处 上一篇文章中简要介绍了Java8的函数式编程,而在Java8中另外一个比 ...
- java8-Stream之数值流
在Stream里元素都是对象,那么,当我们操作一个数字流的时候就不得不考虑一个问题,拆箱和装箱.虽然自动拆箱不需要我们处理,但依旧有隐含的成本在里面.Java8引入了3个原始类型特化流接口来解决这个问 ...
- java8Stream map和flatmap的区别
map和flatmap的区别 map只是一维 1对1 的映射 而flatmap可以将一个2维的集合映射成一个一维,相当于他映射的深度比map深了一层 , 所以名称上就把map加了个flat 叫flat ...
- java8-Stream原理
前言 java8新特性目前使用非常广泛,其中Stream更是最常用的特性,这篇文章将介绍Stream的原理,如果你现在还不怎么会用的话可以看一下菜鸟教 https://www.runoob.com/j ...
- java8-Stream流API
一回顾与说明 经过前面发布的三章java8的博客,你就懂得了我们为什么要用Lamda表达式,Lamda表达式的原理与函数式接口的关系,从Lamda表达式到方法引用和构造引用. 想要学Stream流你必 ...
- java开发两三事(2)-java多数据源+java8stream与LocalDateTime时间差
1. 场景描述 最近在工作中碰到的几个问题,有点坑,记录下,遇到相同或类似问题的朋友可以参考下. 2. 解决方案 2.1 拼接sql后,多数据源执行 采用Spring+DruidDataSource数 ...
- 流式计算(一)-Java8Stream
大约各位看官君多少也听说了Storm/Spark/Flink,这些都是大数据流式处理框架.如果一条手机组装流水线上不同的人做不同的事,有的装电池,有的装屏幕,直到最后完成,这就是典型的流式处理.如果手 ...
随机推荐
- MySql检测阻塞,锁等待sql
------------ 1分钟内产生binlog大小计算 select @a1:=VARIABLE_VALUE as a1from information_schema.GLOBAL_STATUSw ...
- mysql联表查询
2.1 内连接 select a.*,b.* FROM a INNER join b ON a.id = b.id; 查出所有 或者 select a.*,b.* FROM a join b ...
- java IO切割流合并流
切割流,将一个较大的文件,切割成多个小文件存储
- 读取Apache访问日志,查看每一个独立客户端连接获得的字节数
ubuntu中apache2的日志文件位于: /var/log/apache2 代码: # coding=utf-8 import sys ''' 数据 127.0.0.1 - - [10/Jan/2 ...
- SpringMVC 获取请求参数
1.获取Request response对象 在SpringMVC的注解开发中,可以选择性的接收Request和Response对象来使用 2.获取request对象请求参数 a.通过request对 ...
- HDU 1116 Play on Words(并查集和欧拉回路)(有向图的欧拉回路)
Play on Words Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- 廖雪峰Java1-2程序基础-1基本结构
1.类名 类名首字母大写 类名必须是英文字母.数字和下划线的组合 类名必须是以英文字母开头 好的命名:Hello NoteBook VRPlayer 不好的命名:hello 跟无意义的数字Good12 ...
- 关于文章cisco漏洞4786
查看确认方法 [root@nodchen ~]# nmap -p4786 172.30.4.2 Starting Nmap 5.51 ( http://nmap.org ) at 2017-05-20 ...
- mysql 字符集排查
mysql 字符集排查 库级别 SELECT * FROM information_schema.schemata WHERE schema_name NOT IN ( 'information_sc ...
- ORACLE V$lock视图TYPE,ID1,ID2取值的含义
在oracle v$lock视图中,下面对type,ID1,ID2三个列的具体含义说明下: TYPE 有TM,TX两种类型,TX为行级锁,事物锁,TM锁为表级锁 TYPE ID1 ID2 TM 被 ...