是否可以在不执行两个单独的流且不将ID和状态临时存储在HashMap中的情况下执行此操作?
SaveStatus saveStatus = saveService.save(input);
Map<Long, SaveStatus> savedStatuses = new HashMap<>();
saveStatus.getSaveStatusResults()
.stream()
.forEach(s -> savedStatuses.put(s.getId(), s.getSavedStatus()));
objectToUpdateWithNewStatuses.getSaveInstructions()
.stream()
.map(SaveInstruction::getTransaction)
.forEach(t -> t.setSaveStatus(savedStatuses.get(t.getId())));
答案 0 :(得分:2)
在这里使用两个不同的流很有意义!
第二个流不将从第一个流中收集的地图作为输入/源,它需要执行快速检索。
但是您可以通过以下方式改进第一流:
Map<Long, SaveStatus> savedStatuses =
saveStatus.getSaveStatusResults()
.stream()
.collect(toMap(SaveStatusResult::getId, SaveStatusResult::getSavedStatus));
所使用的方法引用假设SaveStatus.getSaveStatusResults()
返回Collection
中的SaveStatusResult
。
并按定义保留第二个流。