有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将带有服务调用的循环重构为流?

您将如何将此代码重构为流

for (ConditionEntity conditionEntity : dbData.getContent()) {
    AdminCondition adminCondition = 
            dataEntityMapper.conditionEntitytoModel(conditionEntity);

    this.myService.addBasicInterest(adminCondition); // <=== this is my Problem
    conditionList.add(adminCondition);
}

到目前为止,我已经做到了:

dbData.getContent().stream()
    .map(conditionEntity -> dataEntityMapper.conditionEntitytoModel(conditionEntity))
    .collect(conditionList);

谢谢你的帮助


共 (4) 个答案

  1. # 1 楼答案

    就做下面这样的事情

    dbData.getContent().stream()
      .map(conditionEntity -> {
          AdminCondition adminCondition = dataEntityMapper.conditionEntitytoModel(conditionEntity);
          this.myService.addBasicInterest(adminCondition);
      }) 
    .collect(conditionList);
    
  2. # 2 楼答案

    List<AdminCondition > conditionList = new ArrayList<>();
    
    dbData.getContent()
          .stream()
          .map(conditionEntity -> dataEntityMapper.conditionEntitytoModel(conditionEntity))
          .forEach(adminCondition  -> {
                this.myService.addBasicInterest(adminCondition);
                conditionList.add(adminCondition);
                       });
    
  3. # 3 楼答案

    我很可能会把这两个单独的声明

    dbData.getContent().stream()
        .map(conditionEntity -> dataEntityMapper.conditionEntitytoModel(conditionEntity))
        .collect(conditionList);
    
    conditionList.forEach(adminCondition -> this.myService.addBasicInterest(adminCondition))
    
  4. # 4 楼答案

    我更喜欢以下解决方案:

    List<ConditionEntity> conditions = dbData.getContent().stream()
            .map(dataEntityMapper::conditionEntitytoModel)
            .collect(Collectors.toList());
    
    conditions.forEach(this::addBasicInterest);