Skip to Content
De Java a Kotlin
book

De Java a Kotlin

by Duncan McGregor, Nat Pryce
September 2024
Intermediate to advanced
424 pages
10h 56m
Spanish
O'Reilly Media, Inc.
Book available
Content preview from De Java a Kotlin

Capítulo 13. De flujos a iterables y a secuencias

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Tanto Java como Kotlin nos permiten transformar y reducir colecciones. Sin embargo, tienen objetivos de diseño e implementaciones diferentes. ¿Qué utiliza Kotlin en lugar de los flujos de Java, cuándo debemos convertir y cómo?

Flujos Java

Java 8 introdujo los flujos en 2014, haciendo un buen uso de las nuevas lambdas. Supongamos que queremos calcular la longitud media de algunas cadenas, con la salvedad de que las cadenas en blanco (las que sólo tienen caracteres de espacio en blanco) deben tratarse como si estuvieran vacías. Antes podríamos haber escrito:

public static double averageNonBlankLength(List<String> strings) {
    var sum = 0;
    for (var s : strings) {
        if (!s.isBlank())
            sum += s.length();
    }
    return sum / (double) strings.size();
}

Con flujos Java, podemos expresar este algoritmo como filter, map, y reduce convirtiendo primero el List en un Stream y aplicando transformaciones:

public static double averageNonBlankLength(List<String> strings) {
    return strings
        .stream()
        .filter(s -> !s.isBlank())
        .mapToInt(String::length)
        .sum()
        / (double) strings.size();
}

En lugar de tener que ejecutar el bucle for en nuestra cabeza para ver lo que hace este código, podemos ver los pasos del algoritmo declarados línea por línea y confiar en que el tiempo de ejecución implemente esos pasos por nosotros.

Si tenemos mucha prisa ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Recetas Java modernas

Recetas Java modernas

Ken Kousen
Programar Android con Kotlin

Programar Android con Kotlin

Pierre-Olivier Laurence, Amanda Hinchman-Dominguez, G. Blake Meike, Mike Dunn
Sistemas reactivos en Java

Sistemas reactivos en Java

Clement Escoffier, Ken Finnigan

Publisher Resources

ISBN: 9781098198404Supplemental Content