前言
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());