关于createCreativeUnit方法的思考

来源:5-19 创意与推广单元关联服务功能实现

mapper

2019-02-16

课程中获取两个id集合的代码是:

  List<Long> unitIds = request.getUnitItems().stream()
                .map(CreativeUnitRequest.CreativeUnitItem::getUnitId)
                .collect(Collectors.toList());
  List<Long> creativeIds = request.getUnitItems().stream()
                .map(CreativeUnitRequest.CreativeUnitItem::getCreativeId)
                .collect(Collectors.toList());           

这样的话,request.getUnitItems()这个集合实际上是遍历了两次,对性能上是有损耗的。
感觉用下面这段代码会更好,只遍历一次集合就获取到了两个id的集合:

    List<Long> creativeIds = new ArrayList<>();
    List<Long> unitIds = new ArrayList<>();
    request.getItems().forEach(i -> {
        creativeIds.add(i.getCreativeId());
        unitIds.add(i.getUnitId());
    });
写回答

1回答

张勤一

2019-02-16

同学你好:

    你这里的思考是非常好的,提出的优化方法也是合理的。但是,由于这样的请求方法,一次性携带的数据不会很多,一次遍历和多次遍历耗时是没有太大差别的。如果是非常多的数据,那么,使用你这里提出的思路是更加合理的。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持! 

2
1
mapper
非常感谢!
2019-02-16
共1条回复

Spring Cloud微服务架构 设计实现广告系统

广告营销系统,未来大中型企业的标配

2143 学习 · 928 问题

查看课程