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

本文介绍了Java8中Stream流的功能,通过案例展示了如何不使用for循环遍历Collection,并进行成员替换。具体实现包括定义一个Function将String转换为Entity,然后使用stream的map方法遍历并转换列表,最后用Collectors.toList()收集结果,实现List<String>到List<Entity>的转换。
摘要由CSDN通过智能技术生成

前言

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());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值