Explorando el código, creando soluciones, y compartiendo conocimientos en el fascinante mundo del desarrollo de software.

miércoles, 14 de febrero de 2024

Programación Funcional en Java 8 y Posteriores

Programación Funcional en Java 8 y Posteriores

Programación Funcional en Java 8 y Posteriores

Expresiones Lambda

Las expresiones lambda son una característica clave de la programación funcional en Java 8. Permiten escribir funciones de manera concisa y expresiva. Aquí hay un ejemplo básico:

// Sintaxis de expresión lambda (parámetros) -> expresión // Ejemplo de una expresión lambda (x, y) -> x + y

En el ejemplo anterior, la expresión lambda toma dos parámetros x e y y devuelve su suma.

Streams

Los streams son otra característica importante de Java 8 que permite realizar operaciones de manera declarativa en conjuntos de datos. Aquí hay un ejemplo que utiliza un stream para filtrar y mapear elementos:

import java.util.Arrays; import java.util.List; public class UsoStreams { public static void main(String[] args) { List nombres = Arrays.asList("Juan", "María", "Carlos", "Elena"); // Utilizando un stream para filtrar y mapear elementos nombres.stream() .filter(nombre -> nombre.startsWith("M")) .map(String::toUpperCase) .forEach(System.out::println); } }

En este ejemplo, el stream filtra los nombres que comienzan con "M" y luego convierte los nombres restantes a mayúsculas antes de imprimirlos.

Interfaz Funcional y Anotación @FunctionalInterface

Una interfaz funcional es una interfaz con un solo método abstracto. En Java, puedes utilizar la anotación @FunctionalInterface para indicar que una interfaz es funcional. Aquí hay un ejemplo:

// Interfaz funcional con la anotación @FunctionalInterface @FunctionalInterface interface MiInterfazFuncional { void miMetodoAbstracto(); } // Uso de la interfaz funcional con una expresión lambda public class UsoInterfazFuncional { public static void main(String[] args) { MiInterfazFuncional miFuncion = () -> System.out.println("Hola desde la expresión lambda"); miFuncion.miMetodoAbstracto(); } }

En este ejemplo, la interfaz MiInterfazFuncional tiene un solo método abstracto. La anotación @FunctionalInterface no es obligatoria, pero sirve como una advertencia para el compilador y otros desarrolladores.


Navegación entre lecciones



© 2024 Programar desde Cero


No hay comentarios:

Publicar un comentario

Java Iniciación en Java Hola mundo en Java Sintaxis básica de Java Orientación a objetos en Java Manejo de excepciones en Java Java desde Cero Colecciones en Java Manejo de Archivos en Java Entrada/Salida en Java Hilos y concurrencia en Java Programación Funcional en Java Programación Orientada a Objetos (OOP) en Java Manejo de fechas y tiempos Persistencia de datos en Java Desarrollo Web en Java Manejo de dependencias Gradle Maven JUnit Git Java Desarrollo de servicios web en Java Patrones de Diseño en Java Principios Básicos de Seguridad en Java Principios SOLID en Java Frameworks populares en Java Ciclo de vida de una aplicación Java Desarrollo Ágil Base de Datos en Java Hola mundo en COBOL Estructura básica de COBOL Sintaxis Básica de COBOL Manipulación de archivos en COBOL Búsqueda en Archivos Secuenciales COBOL Ordenación y Combinación de Archivos COBOL Manejo de Errores en COBOL Subprogramas y Modularidad en COBOL Archivos Indexados en COBOL Clasificación y Fusión de Archivos en COBOL Lectura y Escritura de Archivos Secuenciales COBOL IDE Desarrollo de Software Programación Java Plugin Eclipse Desarrollo Integrado Eclipse IDE Java Development Desarrollo de Aplicaciones Programación en Eclipse Desarrollo Ágil Java EE Desarrollo Web Desarrollo Móvil Eclipse Marketplace Eclipse Plugins JavaFX Desarrollo GUI Git Control de Versiones GitHub Git Bash Git Commands Git Workflow Branching Merging Repositorios Commit Git Branch Git Pull Git Push Git Clone Git Merge Conflictos en Git Git Log Git Tag Git Remote Visual Studio Code IDE Desarrollo de Software Extensiones Editor de Código Programación Configuración VSC Snippets Depuración Control de Versiones Integración Git Atajos de Teclado Temas Productividad Extensiones VSC Lenguajes de Programación