Java8新特性:stream()流的巧妙用法总结

前言

stream流是Java8为collection类新增的一种功能,利用stream,我们可以

  • 不写for循环,而遍历整个collection,且速度更快
  • 替换collection中的成员(类型和值都可以替换)
  • 收集替换结果,然后将原collection类转为任意想要的新collection类

正文

案例1:输入id列表以及统一的状态status,如何批量修改数据库中对应id列表的所有status

分析:

  • 目前我们拿到的数据类型是:List<String> ids以及String status,而想要获得的数据类型是List<Entity> entities(PS:Entity就是实体类,内含id和status属性)
  • 上述转换本质上,是要将List<String>的每一个成员替换为List<Entity>,并为新的成员赋值id与status,因此,可以先定义一个String -> Entity的Function:
Function<String, Entity> f = o -> {
     Entity entity = new Entity();
     entity.setId(Long.parseLong(o.toString()));
     entity.setStatus(Integer.valueOf(status));
     return entity;
};

  • 然后,使用stream流完成整个collection成员的遍历替换,以及重新收集为List:
List<Entity> collect = ids.stream().map(f).collect(Collectors.toList());

版权声明:本文为weixin_43008154原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。