Java Lambda表达式 Stream
Stream
Stream不是集合元素,它不是数据结构并不保存数据,而是有关算法和计算的,更像是一个高级版本的Iterator,原始版本的Iterator,用户只能显式地一个一个遍历元素并对其进行操作,Stream则只需要对其包含的元素执行什么操作,比如”过滤掉长度大于10的字符串“,"获取每个字符串的首字母”等,Stream会隐式地在内部进行遍历,并作出相应地数据转换
用法
- Stream.of("a", "b", "c"):构造一个字符串流
- map
- collect(Collectors.toList/toSet...)
**
* lambda写法
* Stream.of构造一个流,流的类型编译器会自动判断
* map(s->s.toUpperCase()),map类型转换,将一个类型的流转换称另一类型,map只接受一个指定类型的参数这里是String
* s->s.toUpperCase(),参数以及要做的操作,参数会返回可以不是同意类型,但必须是Function接口的一个实例
* collect(Collectors.toList():由Stream里的值生成一个列表,Collectors是Stream的一个全静态方法类,实现各种有用的集合操作,例如将元素累积到集合中,根据各种标准概括元素等
* Function 就是一个函数,其作用类似于数学中函数的定义 ,(x,y)即y=f(x)跟<T,R>的作用几乎一致。
*/
Collection<String> collection = Stream.of("a", "b", "c").map(s->s.toUpperCase()).collect(Collectors.toList());
assert Arrays.asList("A", "B", "C").equals( collection):"断言不通过";
- filter:Stream的过滤操作,传入一个Predicate的函数接口,Predicate只有一个判断的boolean返回值方法test,所以一般都写成lambda形式
Collection<String> collection = Stream.of("0abc", "abc", "bcc").filter(value->Character.isDigit(value.charAt(0))).collect(Collectors.toList());
assert Arrays.asList("0abc").equals(collections) : "两者不相等...";
实例:

本博客为Swagger-Ranger的笔记分享,文中源码地址: https://github.com/Swagger-Ranger
欢迎交流指正,如有侵权请联系作者确认删除: liufei32@outlook.com
Java Lambda表达式 Stream的更多相关文章
- Java Lambda表达式初探
Java Lambda表达式初探 前言 本文受启发于Trisha Gee在JavaOne 2016的主题演讲Refactoring to Java 8. Java 8已经发行两年多,但很多人仍然在使用 ...
- Java Lambda表达式入门[转]
原文链接: Start Using Java Lambda Expressions http://blog.csdn.net/renfufei/article/details/24600507 下载示 ...
- Java Lambda表达式forEach无法跳出循环的解决思路
Java Lambda表达式forEach无法跳出循环的解决思路 如果你使用过forEach方法来遍历集合,你会发现在lambda表达式中的return并不会终止循环,这是由于lambda的底层实现导 ...
- 「Flink」使用Java lambda表达式实现Flink WordCount
本篇我们将使用Java语言来实现Flink的单词统计. 代码开发 环境准备 导入Flink 1.9 pom依赖 <dependencies> <dependency> < ...
- Java Lambda表达式入门
Java Lambda表达式入门 http://blog.csdn.net/renfufei/article/details/24600507 Java 8十个lambda表达式案例 http://w ...
- Java Lambda表达式教程与示例
Lambda表达式是Java 8中引入的一个新特性.一个lambda表达式是一个匿名函数,而且这个函数没有名称且不属于任何类.lambda表达式的概念最初是在LISP编程语言中引入的. Java La ...
- java lambda表达式学习笔记
lambda是函数式编程(FP,functional program),在java8中引入,而C#很早之前就有了.在java中lambda表达式是'->',在C#中是‘=>’. 杜甫说:射 ...
- Java8特性详解 lambda表达式 Stream
1.lambda表达式 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,因为Java正 ...
- Java8特性详解 lambda表达式 Stream【转】
本文转自http://www.cnblogs.com/aoeiuv/p/5911692.html 1.lambda表达式 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有 ...
随机推荐
- Entityframework连接Mysql遇到的问题
1.mysql.data.entity的版本一定要与mysql-connector-net的版本保持一致,我用的版本是6.9.12 2.有时会遇到连接MySQL数据库时提示missing server ...
- 使用Dubbo实现RPC调用
启动Dubbo服务有2个方式,1是通过xml配置,2是通过注解来实现,这点和Spring相似. 采用XML配置如下: <?xml version="1.0" encoding ...
- hive和hbase本质区别——hbase本质是OLTP的nosql DB,而hive是OLAP 底层是hdfs,需从已有数据库同步数据到hdfs;hive可以用hbase中的数据,通过hive表映射到hbase表
对于hbase当前noSql数据库的一种,最常见的应用场景就是采集的网页数据的存储,由于是key-value型数据库,可以再扩展到各种key-value应用场景,如日志信息的存储,对于内容信息不需要完 ...
- ORA-32001:write to SPFILE requested but no SPFILE is in use
oracle报错: ORA-32001:write to SPFILE requested but no SPFILE is in use 解决方法: 1.查看是否有spfile sql> sh ...
- js实现打字机效果
var s = 'Hello World! Hello World! Hello World!'; var con = $('.container'); var index = 0; var leng ...
- keras中的Flatten和Reshape
最近在看SSD源码的时候,就一直不理解,在模型构建的时候如果使用Flatten或者是Merge层,那么整个数据的shape就发生了变化,那么还可以对应起来么(可能你不知道我在说什么)?后来不知怎么的, ...
- vmware tools for linux 安装
Linux VMware Tools安装步骤简易版 Linux VMware Tools安装估计有点困难,我也在网上看了好多版本的Linux安装VMware Tools,方法都一样.但是自己在安装过程 ...
- 一个轻量级AOP的实现(开源)
事先声明,本项目参考AOP in C#和园内大神张逸的文章,思路神马的都不是自己的! 为了让项目的代码看起来更干净,需要一个AOP! 于是就实现了一个非常简单的,非常轻量级,有多轻量级呢? 实现的AO ...
- windows下的套接字IO模型
一般情况下,IO操作的行为受两种因素的影响: IO操作对象的类型(阻塞还是非阻塞) 获取IO操作结果的方式(同步还是异步). 同步就是指操作的发起和操作结果的获取由调用者完成. 异步指操作发起由调用方 ...
- Ubuntu18.04 安装 JDK7
直接下载jdk压缩包方式安装 1.官网下载JDK 地址: http://www.oracle.com/technetwork/articles/javase/index-jsp-138363 ...