java8 stream ,filter 等功能代替for循环
直接上代码,比较实在。
对象A
public Class A{private Long id;private String userName;.........省略get和set方法
}
在List<A>中,查找userName为hanmeimei的对象A。
在java8中,我们可以这么玩
1,查找集合中的第一个对象。
Optional<A> firstA= AList.stream() .filter(a -> "hanmeimei".equals(a.getUserName())) .findFirst();
关于Optional,java API中给了解释。
A container object which may or may not contain a non-null value. If a value is present, isPresent() will return true and get() will return the value.
所以,我们可以这样子使用
if (firstA.isPresent()) {A a = firstA.get(); //这样子就取到了这个对象呢。
}
else {//没有查到的逻辑
}
2,如果想返回集合呢。可是使用这个
List<A> firstA= AList.stream() .filter(a -> "hanmeimei".equals(a.getUserName())) .collect(Collectors.toList());
3,抽取对象中所有的id的集合
1 |
|
例子:用stream 代替下面这段代码:
for (PrecCoverageTypeDTO coverageType : getObjects()) {policyCoverage.getCoverageTypes().add(coverageType.getCode());}
getObjects().stream().map(PrecCoverageTypeDTO::getCode).filter(StringUtils::isNotEmpty).forEach(policyCoverage.getCoverageTypes()::add);
getObjects() 得到的是一个List<PrecCoverageTypeDTO> 对象,对每个 List 对象,调用 getCode 方法,得到 List<String> 对象,然后 filter 取出不为 null 的对象,又得到一个新的 List<String> 对象,再用 forEach 遍历每个对象调用 add 方法,把这些 String 类型的 list 对象 add 到 policyCoverage 对象里
这里的 map 的作用的是 getObject() 返回的 list 对象的类型<PrecCoverageTypeDTO> 里的方法,换句话说就是 map 里所调用的方法(比如:getCode)必须是 list 对象类型里的方法,forEach 里所调用的方法则可以是其他的方法
例子:用 forEach 遍历 list 对象,并在里面写逻辑:
List<String> list = new ArrayList<>();list.add("1"); list.add("2");list.forEach(l->{if(l!=null){System.out.println("hello");}});
总之,超级好用
好文要顶 关注我 收藏该文
java8 stream ,filter 等功能代替for循环相关推荐
- Java8 stream filter map
java8 中的stream filter map 组合使用能很好的代替for 循环去处理逻辑,而且代码简单明了 public static void main(String[] args) {Lis ...
- Java8 Stream接口流式方法:map操作、filter操作以及flatMap操作
点击关注公众号,利用碎片时间学习 关于stream 流式操作,在rt.jar 包里面,ReferencePipeline管道方式操作数据 下面集成所有操作方法,利用这些流,处理大数据的方式,效率提升明 ...
- java8 stream .skip() .limit() 实现分页功能
java8 stream .skip() .limit() 实现分页功能 先分别介绍一下 skip() 和 limit(): 注意,注意,注意:数据量大或者数据复杂的情况下不要使用这种分页方式!! s ...
- JAVA8 Stream方法使用详解Filter、map等用法(一)
文章目录 一.筛选和切片 1.谓词筛选filter 2.筛选不同的元素distinct 3.截断流limit 4.跳过元素 二.映射 1.map对每个元素应用函数 2.流的扁平化 三.查找和匹配 1. ...
- Java8 Stream详解~筛选:filter
筛选,是按照一定的规则校验流中的元素,将符合条件的元素提取到新的流中的操作. 「案例一:筛选出Integer集合中大于7的元素,并打印出来」 public class StreamTest {publ ...
- java8函数式编程 视频_快速掌握Java8 Stream函数式编程技巧
函数式编程优势"函数第一位",即函数可以出现在任何地方. 可以把函数作为参数传递给另一个函数,还可以将函数作为返回值. 让代码的逻辑更清晰更优雅. 减少了可变量(Immutable ...
- Java8————Stream API
引言 Java8 加入了java.util.stream包,这个包中的相关API将极大的增强容器对象对元素的操作能力. 它专注于对集合对象进行各种便利.高效的聚合操作,或大批量数据处理. Stream ...
- java8 stream 做累加_《Java 8 in Action》Chapter 1:为什么要关心Java 8
自1998年 JDK 1.0(Java 1.0) 发布以来,Java 已经受到了学生.项目经理和程序员等一大批活跃用户的欢迎.这一语言极富活力,不断被用在大大小小的项目里.从 Java 1.1(199 ...
- java8 Stream的实现原理 (从零开始实现一个stream流)
1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2 ...
- Java8 Stream:两万字博文教你玩转集合的筛选、归约、分组、聚合
目录 一.Stream概述 二.Stream 的创建 三.Stream 的中间操作 3.1.筛选(filter/distinct) 3.2.切片(limit/skip) 3.3.映射(map/mapT ...
最新文章
- python解压_python解压缩
- RHEL7 单独安装图形 X11
- CSS的outline轮廓属性:轮廓属性
- 微信小程序调用摄像头扫描识别二维码和条形码
- 你有一笔新订单 语音_上市即成爆款 哪吒V首日订单突破1200辆_搜狐汽车
- Pycharm如何在控制台输出窗口中使用Python解释器
- 改了两天的bug,一个JWT解决了。。。
- 字段 密码有效期_你知道Linux中用户们的密码藏在哪儿吗?
- 李彦宏开年内部信:2018营收破千亿,做出好产品的百度已归来
- 注册时,邮箱自动发送验证
- 百度风云榜前50名小偷——专门用于提高你网站的流量!
- linux ssh知识
- Unity 使用Shader实现序列帧动画
- Python爬虫——查询英语四、六级成绩
- java 创建word文件_java基于feemarker 生成word文档(超级简单)
- 以铜为镜,正衣冠,以史为镜,明心志,以人为镜,明得失
- 建立数据思维的13个实用思维工具
- uni-app前端开发(一)登录功能
- C++ opencv之像素值统计(minMaxLoc,meanStdDev)
- 神奇的sqrt函数以及高精度记时函数