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
Esta es la mejor solución, por la discusión en mi equipo.