我有一个List<DataDTO>dataPerDemo and each list element hasList<AnotherDataDTO> dataForFirstDemo and it hasList<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()); } }}
2 回答
![?](http://img1.sycdn.imooc.com/54584f6d0001759002200220-100-100.jpg)
萧十郎
TA贡献1815条经验 获得超13个赞
您可以在 java 8 中使用 IntStream 进行迭代:对于字符串列表,我在下面给出了一个示例,您可以根据您的实际列表进行修改:
private void copyIncludeFlag(List<String> primaryWeeks, List<String> additionalWeeks) {
IntStream.range(0, primaryWeeks.size()).forEach(weekNumber -> {
if (primaryWeeks.get(weekNumber).equals(additionalWeeks.get(weekNumber))) {
additionalWeeks.get(weekNumber).equals(primaryWeeks.get(weekNumber));
}
});
}
我不知道这是否是您要查找的内容或其他内容。但是对于迭代,您可以使用它,它会对您有所帮助。只需更改方法参数中的列表类型即可。
如果对您有帮助,请告诉我。
我只是建议,它可能是也可能不是确切的答案。
添加回答
举报
0/150
提交
取消