直接上代码,比较实在。

对象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

List<Long> idList = AList.stream.map(A::getId).collect(Collectors.toList());

例子:用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循环相关推荐

  1. Java8 stream filter map

    java8 中的stream filter map 组合使用能很好的代替for 循环去处理逻辑,而且代码简单明了 public static void main(String[] args) {Lis ...

  2. Java8 Stream接口流式方法:map操作、filter操作以及flatMap操作

    点击关注公众号,利用碎片时间学习 关于stream 流式操作,在rt.jar 包里面,ReferencePipeline管道方式操作数据 下面集成所有操作方法,利用这些流,处理大数据的方式,效率提升明 ...

  3. java8 stream .skip() .limit() 实现分页功能

    java8 stream .skip() .limit() 实现分页功能 先分别介绍一下 skip() 和 limit(): 注意,注意,注意:数据量大或者数据复杂的情况下不要使用这种分页方式!! s ...

  4. JAVA8 Stream方法使用详解Filter、map等用法(一)

    文章目录 一.筛选和切片 1.谓词筛选filter 2.筛选不同的元素distinct 3.截断流limit 4.跳过元素 二.映射 1.map对每个元素应用函数 2.流的扁平化 三.查找和匹配 1. ...

  5. Java8 Stream详解~筛选:filter

    筛选,是按照一定的规则校验流中的元素,将符合条件的元素提取到新的流中的操作. 「案例一:筛选出Integer集合中大于7的元素,并打印出来」 public class StreamTest {publ ...

  6. java8函数式编程 视频_快速掌握Java8 Stream函数式编程技巧

    函数式编程优势"函数第一位",即函数可以出现在任何地方. 可以把函数作为参数传递给另一个函数,还可以将函数作为返回值. 让代码的逻辑更清晰更优雅. 减少了可变量(Immutable ...

  7. Java8————Stream API

    引言 Java8 加入了java.util.stream包,这个包中的相关API将极大的增强容器对象对元素的操作能力. 它专注于对集合对象进行各种便利.高效的聚合操作,或大批量数据处理. Stream ...

  8. java8 stream 做累加_《Java 8 in Action》Chapter 1:为什么要关心Java 8

    自1998年 JDK 1.0(Java 1.0) 发布以来,Java 已经受到了学生.项目经理和程序员等一大批活跃用户的欢迎.这一语言极富活力,不断被用在大大小小的项目里.从 Java 1.1(199 ...

  9. java8 Stream的实现原理 (从零开始实现一个stream流)

    1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2  ...

  10. Java8 Stream:两万字博文教你玩转集合的筛选、归约、分组、聚合

    目录 一.Stream概述 二.Stream 的创建 三.Stream 的中间操作 3.1.筛选(filter/distinct) 3.2.切片(limit/skip) 3.3.映射(map/mapT ...

最新文章

  1. python解压_python解压缩
  2. RHEL7 单独安装图形 X11
  3. CSS的outline轮廓属性:轮廓属性
  4. 微信小程序调用摄像头扫描识别二维码和条形码
  5. 你有一笔新订单 语音_上市即成爆款 哪吒V首日订单突破1200辆_搜狐汽车
  6. Pycharm如何在控制台输出窗口中使用Python解释器
  7. 改了两天的bug,一个JWT解决了。。。
  8. 字段 密码有效期_你知道Linux中用户们的密码藏在哪儿吗?
  9. 李彦宏开年内部信:2018营收破千亿,做出好产品的百度已归来
  10. 注册时,邮箱自动发送验证
  11. 百度风云榜前50名小偷——专门用于提高你网站的流量!
  12. linux ssh知识
  13. Unity 使用Shader实现序列帧动画
  14. Python爬虫——查询英语四、六级成绩
  15. java 创建word文件_java基于feemarker 生成word文档(超级简单)
  16. 以铜为镜,正衣冠,以史为镜,明心志,以人为镜,明得失
  17. 建立数据思维的13个实用思维工具
  18. uni-app前端开发(一)登录功能
  19. C++ opencv之像素值统计(minMaxLoc,meanStdDev)
  20. 神奇的sqrt函数以及高精度记时函数

热门文章

  1. druid Approximate Histograms
  2. 《结队-贪吃蛇-项目进度》
  3. fedora20配置静态ip
  4. 关于Java中volatile关键字笔记
  5. ubuntu14上安装ros教程
  6. [IOS, Android] UI Thread的一些思想
  7. VS2005 中网站转为Web应用程序的方法
  8. Javascript设置对象的ReadOnly属性
  9. 期货价格与即期价格?
  10. Hibernate 连接数据库,数据库返回数据超过限制报错