Pregunta sobre la simplificación de código relacionado con la iteración del bucle

Shen junio:

Tengo una pregunta acerca de la codificación. Tengo una tarea que ha de recorrer una lista de elementos que hacer dedupe.

La lista de elementos se ordenan por tiempo y se divide en ventanas de tiempo sub. En cada ventana de tiempo sub, que necesito para recoger el elemento deduplicado por alguna lógica de negocio. Por la lógica de negocio, el elemento deduplicado en una ventana de tiempo sub sólo se conoce cuando se repitan ciertos todos los elementos en la ventana de tiempo sub. Mi pregunta es cómo simplificar la codificación para esta tarea.

Lo mejor que puedo pensar es en algunos pseudo-código, como a continuación

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);

En concreto, la forma de evitar la última declaración fuera del bucle? ¿Es posible terminar la tarea de recoger todos los elementos duplicados eliminados dentro de un bucle o un uso de Java corriente?

Muchas gracias, Jun

Shen junio:

Esta es la mejor solución, por la discusión en mi equipo.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=362719&siteId=1
Recomendado
Clasificación