我对编码有疑问。我得到的任务是迭代要重复数据删除的元素列表。

元素列表按时间排序,并分为子时间窗口。在每个子时间窗口中,我需要根据一些业务逻辑来选择重复数据删除元素。根据业务逻辑,仅当子时间窗口中的所有元素都经过迭代时,才知道子时间窗口中的重复数据删除元素。我的问题是如何简化此任务的编码。

我能想到的最好的是一些伪代码,如下所示

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流收集所有重复数据删除元素的任务?

非常感谢,

最佳答案

根据我团队中的讨论,这是最好的解决方案。

10-02 03:20