Comenzando con java-stream

Instalación o configuración

Instrucciones detalladas sobre cómo configurar o instalar java-stream.

Trabajar con Java Stream Api (Java 8) en Android usando Android Studio

Configuración de Gradle:

build.gradle(Módulo: aplicación)

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

     jackOptions {
            enabled true
        }

¿Qué es la API de transmisión?

Stream es una nueva capa abstracta introducida en Java 8. Una secuencia es una secuencia de elementos (objetos, tipos primitivos) del origen de la secuencia. Por lo tanto, stream no es una estructura de datos y no almacena los elementos con los que trabaja. Puede ser de un tamaño finito o infinito y permitir un paralelismo de código sin esfuerzo


Ventajas:

  • Ayuda en el uso de datos de forma declarativa. Podemos hacer uso de Funciones de base de datos como Max, Min, etc., sin ejecutar un completo iteración.
  • Hace un buen uso de las arquitecturas multinúcleo sin preocuparse por código de subprocesos múltiples.
  • Podemos crear una tubería de operaciones de datos con Java Stream que puede ejecutarse en una secuencia o en paralelo.
  • Proporciona soporte para operaciones de grupo por, pedido por, etc.
  • Admite la escritura de código en estilo de programación funcional.
  • Proporciona procesamiento paralelo de datos.

Cómo funcionan las transmisiones:

Enfoque normal (sin usar Stream Api) :

 List<Integer> numbers = new ArrayList<>();
    numbers.addAll(Arrays.asList(1, 20, 3, 10, 20, 30, 4, 50, 80, 1, 2));//adding dummy data

    int i = 0;
    List<String> number_str = new ArrayList<>();
    for (Integer num : numbers) {
        if (i >= 5)//after 5 loop will stop
            break;

        if (num >= 10) // check number greater than or equal to 10
        {
            number_str.add(String.format("Number %d", num));//Typecast Integer to String then add to String List
            i++;//increment i count
        }
    }

    number_str.sort(Comparator.naturalOrder());//sort the list

En el código anterior, creamos una lista de enteros y agregamos algunos datos, luego iteramos usando el ciclo for. En cada ejecución de bucle, comprobamos el número de bucles (i >= 5) y num >=10. finalmente ordenar la lista de cadenas.


Ahora, reescribamos el código usando la API 8 Stream de Java:

  List<Integer> numbers = new ArrayList<>();
numbers.addAll(Arrays.asList(1, 20, 3, 10, 20, 30, 4, 50, 80, 1, 2));

List<String> number_str = numbers.stream()
        .filter(num -> num >= 10)//check num greater than 10
        .limit(5)//stop loop at 5
        .sorted()//sort the list
        .map(num -> String.format("Number %d", num))//typecast into String List
        .collect(Collectors.toList());