[英]Question about simplifying code related to loop iteration
我有一個關於編碼的問題。 我得到一個任務,它是迭代一個元素列表來執行重復數據刪除。
元素列表按時間排序並划分為子時間窗口。 在每個子時間窗口中,我需要根據某些業務邏輯選取已刪除重復的元素。 根據業務邏輯,子時間窗口中的去重元素只有在子時間窗口中的所有元素都被迭代時才知道。 我的問題是如何簡化此任務的編碼。
我能想到的最好的是一些偽代碼,如下所示
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 流中收集所有重復數據刪除元素的任務?
非常感謝,君
根據我團隊的討論,這是最好的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.