Как рефакторинг для цикла с вызовом службы в поток? - PullRequest
4 голосов
/ 26 марта 2019

как бы вы преобразовали этот код в потоки?

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 ]

4 голосов
/ 26 марта 2019

Я бы предпочел следующее решение:

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

conditions.forEach(this::addBasicInterest);
1 голос
/ 26 марта 2019

Просто сделайте что-то вроде ниже.

dbData.getContent().stream()
  .map(conditionEntity -> {
      AdminCondition adminCondition = dataEntityMapper.conditionEntitytoModel(conditionEntity);
      this.myService.addBasicInterest(adminCondition);
  }) 
.collect(conditionList);
1 голос
/ 26 марта 2019

Скорее всего, я бы изложил это в двух отдельных утверждениях.

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

conditionList.forEach(adminCondition -> this.myService.addBasicInterest(adminCondition))
1 голос
/ 26 марта 2019
List<AdminCondition > conditionList = new ArrayList<>();

dbData.getContent()
      .stream()
      .map(conditionEntity -> dataEntityMapper.conditionEntitytoModel(conditionEntity))
      .forEach(adminCondition  -> {
            this.myService.addBasicInterest(adminCondition);
            conditionList.add(adminCondition);
                   });
...