关于简化循环迭代相关代码的问题
Question about simplifying code related to loop iteration
我有一个关于编码的问题。我得到一个任务是迭代元素列表以进行重复数据删除。
元素列表按时间排序,分为子时间windows。在每个子时间 window 中,我需要根据某些业务逻辑提取重复数据删除的元素。根据业务逻辑,子时间 window 中的去重元素只有在子时间 window 中的所有元素都被迭代时才知道。我的问题是如何简化此任务的编码。
我能想到的最好的是像下面这样的伪代码
List<Element> deduplicated = new List();
Element subWindowPeekSignal = null;
Time subWindowEndTime = null;
elements.foreach(e -> {
if (subWindowPeekElement != null
&& subWindowEndTime != null
&& isElementInTimeWindow(e, subWindowEndTime) {
if (isIteratedElementHigherPriority(subWindowPeekElement, e)) {
subWindowPeekElement = e;
}
} else {
if (subWindowPeekElement != null) {
deduplicated.add(subWindowPeekElement);
}
subWindowPeekElement = e;
subWindowEndTime = getTime(e);
}
});
//the ugly statement outside of loop
deduplicated.add(subWindowPeekElement);
具体来说,如何避免循环外的最后一条语句?是否可以在一个循环或使用 java 流中完成收集所有去重元素的任务?
非常感谢,
六月
根据我团队的讨论,这是最佳解决方案。
我有一个关于编码的问题。我得到一个任务是迭代元素列表以进行重复数据删除。
元素列表按时间排序,分为子时间windows。在每个子时间 window 中,我需要根据某些业务逻辑提取重复数据删除的元素。根据业务逻辑,子时间 window 中的去重元素只有在子时间 window 中的所有元素都被迭代时才知道。我的问题是如何简化此任务的编码。
我能想到的最好的是像下面这样的伪代码
List<Element> deduplicated = new List();
Element subWindowPeekSignal = null;
Time subWindowEndTime = null;
elements.foreach(e -> {
if (subWindowPeekElement != null
&& subWindowEndTime != null
&& isElementInTimeWindow(e, subWindowEndTime) {
if (isIteratedElementHigherPriority(subWindowPeekElement, e)) {
subWindowPeekElement = e;
}
} else {
if (subWindowPeekElement != null) {
deduplicated.add(subWindowPeekElement);
}
subWindowPeekElement = e;
subWindowEndTime = getTime(e);
}
});
//the ugly statement outside of loop
deduplicated.add(subWindowPeekElement);
具体来说,如何避免循环外的最后一条语句?是否可以在一个循环或使用 java 流中完成收集所有去重元素的任务?
非常感谢, 六月
根据我团队的讨论,这是最佳解决方案。