我有一个
List<DataDTO>dataPerDemo and each list element has
List<AnotherDataDTO> dataForFirstDemo and it has
List<AnotherWeekDataDTO> weeksForFirstDemo.
我对每个演示都有相同的结构。期望的结果是将属性值从第一个列表元素 weekForFirstDemo 传播到其余的列表元素。我做到了,但我想知道如何通过使用 java 8 和流(可能是 flatMap)来优化它。欢迎所有想法。
问候
private void propagateFlagWeekIsIncludedToTheAllDemos(List<BaselineRatingsSweepsTableDataDTO> sweepsDataPerDemo) {
Iterator<BaselineRatingsSweepsTableDataDTO> sweepsIterator = sweepsDataPerDemo.iterator();
// No primary ... nothing
if (!sweepsIterator.hasNext()) return;
List<BaselineRatingsSweepDataDTO> sweepsForPrimaryDemo = sweepsIterator.next().getSweeps();
// Process remaining demos ( secondary,tersiary .. )
while (sweepsIterator.hasNext()) {
List<BaselineRatingsSweepDataDTO> sweeps = sweepsIterator.next().getSweeps();
processSweeps (sweepsForPrimaryDemo, sweeps);
}
}
private void processSweeps(List<BaselineRatingsSweepDataDTO> sweepsForPrimaryDemo,
List<BaselineRatingsSweepDataDTO> sweepsForAdditionalDemos) {
// TODO: assert equal sizes
// sweepsForPrimaryDemo && sweeps sizes should be the same !
for (int i=0; i < sweepsForAdditionalDemos.size(); i++) {
List<BaselineRatingsSweepWeekDataDTO> primaryWeeks = sweepsForPrimaryDemo.get(i).getWeeks();
List<BaselineRatingsSweepWeekDataDTO> additionalWeeks = sweepsForAdditionalDemos.get(i).getWeeks();
copyIncludeFlag(primaryWeeks, additionalWeeks);
}
}
private void copyIncludeFlag(List<BaselineRatingsSweepWeekDataDTO> primaryWeeks,
List<BaselineRatingsSweepWeekDataDTO> additionalWeeks) {
// TODO: assert equal sizes
for (int i=0; i < primaryWeeks.size(); i++) {
if (primaryWeeks.get(i).getWeek().equals(additionalWeeks.get(i).getWeek())) {
additionalWeeks.get(i).setIsIncluded(primaryWeeks.get(i).getIsIncluded());
}
}
}
萧十郎
相关分类