El uso de corrientes de resumir una colección de objetos inmutables `Duration`, en Java

Albahaca Bourque:

La java.time.Durationclase incorporado en Java 8 y posterior representa un lapso de tiempo sin ataduras a la línea de tiempo en la escala de horas-minutos-segundos. La clase ofrece un plusmétodo para resumir dos de esos espacios de tiempo.

Los java.time clases utilizan objetos inmutables. Así que el Duration::plusmétodo devuelve un nuevo tercer Durationobjeto como resultado en vez de alterar (mutando) cualquiera de los objetos de entrada.

La sintaxis convencional para resumir una colección de Durationobjetos sería la siguiente.

Duration total = Duration.ZERO;
for ( Duration duration : durations )
{
    total = total.plus( duration );
}

Pueden corrientes pueden utilizar en lugar de este forcircuito?

Jacob G.:

Esto se puede lograr usando el sobrecargado Stream#reducemétodo que acepta una identidad:

durations.stream().reduce(Duration.ZERO, Duration::plus)

El siguiente fragmento de un ejemplo:

var durations = List.of(Duration.ofDays(1), Duration.ofHours(1));
System.out.println(durations.stream().reduce(Duration.ZERO, Duration::plus));

Como era de esperar, la salida es:

PT25H

Supongo que te gusta

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