Programación funcional en Java 8+ usando Stream API con ejemplo

API es un acrónimo de Interfaz de programación de aplicaciones, que es software y los flujos de Java funcionan en una fuente de datos. Considere una corriente como un flujo de agua en un pequeño canal. Tomemos un ejemplo de la vida real. Cada vez que un usuario utiliza una aplicación que es popular en estos días como WhatsApp para comunicarse mediante la entrega de mensajes de texto o llamadas a otros usuarios. Ambos usuarios están utilizando una API.

Los flujos de Java funcionan en tres operaciones que, como se menciona a continuación 

  1. Fuente de datos
  2. Operación intermedia
  3. Operación de terminales

Métodos: los flujos se pueden crear de tres maneras

  1. Usar un objeto de cualquier clase del marco de la colección
  2. Usar una array del tipo de datos de referencia
  3. Usando la interfaz definida en el paquete ‘java.util.stream’

Método 1: fuente de datos 

La fuente de datos puede ser muy variada, como una array, una lista, etc. 

Sintaxis: 

ArrayList<Integer> numbers = new ArrayList<>();
Integer[] numbers = {1,2,3};

Ejemplo 1: uso de un objeto como fuente de datos

Java

// Java Program showcasing data source
// using an object as a data source
 
// Importing input output classes
import java.io.*;
 
// Class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Data Source
 
        // Creating an arrayList object
        // Declaring object of String type
        ArrayList<String> gfgNames = new ArrayList<>();
 
        // Custom input elements to above object
        gfgNames.add("Dean");
        gfgNames.add("castee");
        gfgNames.add("robert");
 
        // Creating object of Stream where Stream is created
        // using arrayList and object as data source
        Stream<String> streamOfNames = gfgNames.stream();
 
        // Print and display element
        System.out.print(streamOfNames);
    }
}

 
Ejemplo 2: uso de una array como fuente de datos

// Data Source
Integer[] numbers = {1,2,3,4,5};
// Stream using an array
Stream<Integer> streamOfNumbers = Arrays.stream(numbers);
// using predefined Instream interface
integerStream = IntStream.range(1,100); // a stream from 1 to 99;

Java

// Java Program showcasing data source
// using an array as a data source
 
// Importing java input output class
import java.io.*;
 
// Importing all classes from
// java.util package
import java.util.*;
 
// Importing class for additional operations,
// additionls and pipelines
import java.util.stream.IntStream;
 
// Class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating a predefined stream using range method
        // Custom inputs for range as parameters
        var stream = IntStream.range(1, 100);
 
        // Stream is created
        var max = stream.filter(number -> number % 4 == 0)
                      .count();
 
        // Print and display the maximum number
        // from the stream
        System.out.println(max);
    }
}
24

Método 2: Operación Intermedia

Las operaciones intermedias son algunos métodos que se pueden aplicar en una corriente. 

Nota: Puede ser de cualquier número

filter()

Ejemplo:

Java

import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        // Data Source
        Integer[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }
 
        // Stream
        Stream<Integer> streamOfNumbers
            = Arrays.stream(numbers);
 
        // filter all the even numbers
        Stream<Integer> evenNumbersStream
            = streamOfNumbers.filter(
                number -> number % 2 == 0)
    }
}

 
Método 3: Operación terminal

Métodos de operación de terminal que podemos aplicar en una transmisión que harán que una transmisión se «cierre».

Concepto: 

Algunas operaciones de terminal se pueden usar para iterar sobre los elementos de la secuencia.

min(),max(),count()
forEach(),noneMatch()

Ejemplo 1: explicación de la API de transmisión

Java

// Importing input output classes
import java.io.*;
// Importing all classes from
// java.util package
import java.util.*;
 
// Class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Data source
        // Custom integer inputs
        Integer[] numbers
            = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
 
        // Stream
        var streamOfNumbers = Arrays.stream(numbers);
 
        // Using filter method
        var evenNumbersStream
            = streamOfNumbers
                  .filter(number -> number % 3 == 0)
                  .count();
 
        // Print and display
        System.out.println(evenNumbersStream);
    }
}
Producción

4

Ejemplo 2:

Java

// Importing all classes from java.util package
import java.io.*;
import java.util.*;
 
// Class
class GFG {
 
  // Main driver method
    public static void main(String[] args)
    {
      // Creating an ArrayList of Integer type
        ArrayList<Integer> list = new ArrayList<>();
       
      // Adding elements to above object of Arraylist
      // Custom inputs
        list.add(20);
        list.add(4);
        list.add(76);
        list.add(21);
        list.add(3);
        list.add(80);
 
        var stream = list.stream();
 
        var numbers
            = stream.filter(number -> number % 2 == 0)
                  .filter(number -> number > 20);
       
      // Print all the elements of the stream on the console
        numbers.forEach(System.out::println);
    }
}
Producción

76
80

Nota: También se puede pasar lambda número -> System.out.println(número + ” “)

Publicación traducida automáticamente

Artículo escrito por dimpalagrawal21 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *