Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como streams

Java Tip 26: Stream API

La Stream API de Java sirve para procesar colecciones de datos de forma declarativa y funcional, evitando bucles explícitos y haciendo el código más legible, conciso y fácil de paralelizar. Los Streams representan una secuencia de elementos sobre la cual se pueden aplicar operaciones como filtrar, transformar, ordenar o reducir. No almacenan datos: simplemente transportan valores desde una fuente (colección, arreglo, I/O, etc.) a través de una pipeline de operaciones.   Permiten escribir código más expresivo y funcional, similar a otros lenguajes modernos. Operaciones principales Los Streams se dividen en dos tipos de operaciones: Intermedias (devuelven otro Stream): filter() → filtra elementos según una condición.   map() → transforma cada elemento.   sorted() → ordena los elementos. Terminales (devuelven un resultado): collect() → convierte el Stream en una colección.   forEach() → recorre los elementos.   red...

Java Tip 23: functional interfaces

En la anterior entrega vimos lo que son las expresiones lambda . En esta ocasión veremos las Functional Interfaces . Una Functional Interface es una interfaz Java que contiene un solo método abstracto. Esto garantiza que se pueda usar con expresiones lambda. ¿Cómo definimos una Functional Interface (interface funcional)? Con la anotación @FunctionalInterface un ejemplo sería este bloque: @FunctionalInterface interface MyInterfaceFuncional { void hacerAlgo (); } Como vimos anteriormente existen cuatro principales: Consumer: Puede o no recibir algún valor y no devolver nada.  Function: Puede tomar dos valores de distinto tipo y devolver un valor en específico.  Predicate: Puede tomar valores y devolver un valor booleano true o false.  Supplier: No recibe valores, pero devuelve un valor. Consumer. @FunctionalInterface interface Consumer < T > { void accept (T t); } Function. @FunctionalInterface interface Func...

Java Tip 22: expresiones lambda

Hoy hablaremos de una característica fundamental del lenguaje Java que apareció desde la versión 8: las expresiones lambda . Las cuales no son otra cosa que funciones que no necesitan pertenecer a alguna clase previamente definida , es decir, son anónimas. Características: Vienen de la programación funcional.  Son funciones anónimas.  Se escriben en línea.  Pueden o no recibir cero o más argumentos.  Pueden o no retornar algún valor. Pueden consumir métodos de otras clases y objetos. Pueden pasar como argumentos en los métodos. Solo pueden acceder a variables del ámbito al que pertenecen. La sintaxis básica es la siguiente: () => {cuerpo - lambda} (param) => {cuerpo - lambda} (param1, param2) => {cuerpo - lambda} (param1, param2, paramN) => {cuerpo - lambda} Miremos unos ejemplos: Sin parámetros: () -> System. out . println ( "Hola desde una lambda sin parámetros" ); Con un parámetro: Predicate < Integer > esPar...