
Qué son las expresiones lambda en Java
Las expresiones lambda en Java implican la incursión de Java en la programación funcional. Corresponden con funciones de Java que normalmente son anónimas y se escriben en línea allí donde se usan. Recogen unos parámetros y los aplica a una expresión o bloque de código. Lambdas y streams en java, aprende programación funcional. Ejemplo básico:
(parametro1, parametro2) => expresión
o bien
(parametro1, parametro2) => {bloque de código}
Las expresiones lambda son muy limitadas y deben devolver inmediatamente el resultado salvo que sean “void”. No pueden hacer uso de palabras reservadas como “if” o “for” para mantener su simplicidad. Si se necesitan más líneas de código puede usarse directamente un bloque de código en vez de la expresión.
Las expresiones lambda son por tanto funciones anónimas y pueden ser utilizadas allí donde el tipo aceptado sea una interfaz funcional.
Las funciones lambdas se crearon a partir de la versión Java 8. Sus entidades principales están contenidas en el paquete java.util.funcional.
Lambas y streams en Java, aprende programación funcional
Cuando implementas lambdas solo puede usarse una expresión. Las lambdas son implementaciones de interfaces funcionales. Una interfaz funcional es aquella interfaz con un único método abstracto. El beneficio que dan las lambdas es que te permiten implementar el método sin necesidad de implementar la interfaz e instanciar el objeto. Ejemplo a continuación:
interface InterfazFuncional
{
// Funcion abstracta
void funcionAbstracta(int x);
// Funcion normal
default void funcionNormal()
{
System.out.println("Hola");
}
}
class Test
{
public static void main(String args[])
{
// Esta interfaz por defecto implementa funcionAbstracta()
InterfazFuncional objeto = (int x)-> System.out.println(2 * x);
// Llamada a la expresion lambda
objeto.abstractFun(6);
}
}
Ejemplos de expresiones lambdas
Las expresiones lambda se usan frecuentemente como parámetros de funciones. Otro uso común de las lambdas es la generación de threads (hilos).
Lambdas Threads Java
Ejemplo de como se implementa un objeto Runnable con un bloque de código lambda para ejecutar el hilo.
// Lambda Runnable
Runnable tarea2 = () -> { System.out.println("Tarea #2 está en ejecución"); };
// Iniciar el hilo
new Thread(tarea2).start();
Ejemplo lambdas en gestión de ficheros
El código siguiente procesa un fichero, realiza un mapeo del valor de cada línea que corresponda con la expresión regular PALABRA_REGEX y filtra aquellos que sean distintos de ese valor pasándolos a minúscula e imprimiéndolo por pantalla.
try (BufferedReader reader = Files.newBufferedReader(Paths.get("FicheroTexto.txt"), StandardCharsets.UTF_8)) {
reader.lines()
.flatMap(line -> Stream.of(line.split(PALABRA_REGEX)))
.distinct()
.map(String::toLowerCase)
.forEach(System.out::println);
}
Clasificación de lambdas
- Consumidores: Aceptan un solo valor y no devuelven ninguno.
- Proveedores: No reciben parámetros y devuelven un resultado.
- Funciones: Aceptan un argumento y devuelven un valor.
- Operadores Unarios: Tanto el valor recibido como el devuelto son del mismo tipo.
- Operadores Binarios: Los dos argumentos y el valor devuelto son del mismo tipo.
- Predicados: Expresiones que aceptan un parámetro y devuelven un valor lógico.
Recursos básicos Java
| Asunto | Descripción |
| Tutorial básico y sintaxis | Tutorial básico Java y sintaxis. Aprende los fundamentos del lenguaje. |
| Hilos (Threads) | Aprende a manejar hilos y las cuestiones básicas de la concurrencia |
| Funciones Lambda | Aquí te enseñamos las nociones más importantes para arrancas con funciones lambda |
| Palíndromos | Programa de ejemplo para el uso de palíndromos en Java. |
| Máquina Virtual de Java | Te explicamos el funcionamiento de la máquina virtual de java (Java Virtual Machine – JVM) |
| JDK, JRE y JVM | Diferencias entre el JDK, JRE y JVM. |
| Mejores libros Java en Español | Hazte con los mejores libros Java para aprender paso a paso y profundizar en las mejores prácticas |
| TensorFlow | Manejo del API de TensorFlow para la construcción de grafos de operaciones y su ejecución |
| Tutorial Log4j | Tutorial para el manejo de Log4j, herramienta ágil y flexible para la gestión de Logs en Java |
| Java Security | Entiende y aplica las posibilidades que da Java para mantener la seguridad |
| Tutorial JConsole | Aprende los conceptos básicos de monitorización de procesos Java con JConsole |
| JavaFX | Tutorial de JavaFX, librería gráfica moderna para construcción de GUIs en móvil, escritorio y web. |
| Estructuras de datos en Java | Explicación y ejemplos de las estructuras de datos más importantes: listas, pila, cola, arbol. |
| Javaapi | Conjunto de clases, interfaces, métodos y paquetes que forman parte de la plataforma Java estándar |
| Algoritmo Huffman | Método eficiente para codificar datos, asignando códigos más cortos a los caracteres más frecuentes |
Algoritmos matemáticas
| Algoritmo | Descripción |
| Sucesión de Fibonacci | Aprende a programar en Java la famosa sucesión de Fibonacci |
| Números Primos | Algoritmo de cálculo en Java para saber si un número es primo |
| Factorial | Cálculo del factorial de un número en Java |
| Número Pi | Aprende a calcular Pi en Java |
| Número e | Número e, algoritmo en Java |
| Raíz cuadrada | Desarrollo en Java del algoritmo raíz cuadrada |
| Números Perfectos | Determina en Java si un número es “perfecto” |
| Conversión binario – hexadecimal | Conversor binario a hexadecimal en Java |
| Generación de números aleatorios | Generar números aleatorios entre 1 y 100, ejemplos prácticos |
| Matrices en Java | Crea una matriz en Java y manéjala con soltura |
| Calculadora en Java | Ejemplo sencillo para montar una calculadora en java con interfaz básica |