Curso de Objetos y Arrays en Java usando Funciones Lambda
Introducción
En este curso aprenderás cómo manejar objetos y arrays en Java, y cómo aprovechar las funciones lambda junto con la API de Streams para escribir código más conciso, expresivo y moderno.
1. Objetos en Java
Los objetos son instancias de clases. Veamos un ejemplo simple con una clase Persona
:
class Persona {
private String nombre;
private int edad;
public Persona(String nombre, int edad) {
this.nombre = nombre;
this.edad = edad;
}
public String getNombre() { return nombre; }
public int getEdad() { return edad; }
@Override
public String toString() {
return nombre + " (" + edad + " años)";
}
}
2. Arrays de Objetos
Un array puede almacenar múltiples objetos del mismo tipo:
Persona[] personas = {
new Persona("Ana", 30),
new Persona("Luis", 25),
new Persona("María", 35)
};
3. Uso de Funciones Lambda
Con las funciones lambda, podemos recorrer, filtrar y ordenar arrays de objetos de forma más clara usando Arrays.stream()
o List.stream()
.
Ejemplo: Filtrar por edad
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
Persona[] personas = {
new Persona("Ana", 30),
new Persona("Luis", 25),
new Persona("María", 35)
};
// Filtrar mayores de 28 años
Arrays.stream(personas)
.filter(p -> p.getEdad() > 28)
.forEach(System.out::println);
}
}
Ejemplo: Ordenar por nombre
Arrays.stream(personas)
.sorted(Comparator.comparing(Persona::getNombre))
.forEach(System.out::println);
Ejemplo: Mapear solo nombres
List nombres = Arrays.stream(personas)
.map(Persona::getNombre)
.collect(Collectors.toList());
System.out.println(nombres);
4. Ejercicios Prácticos
- Crea un array de objetos
Producto
con nombre y precio, y filtra los que cuesten más de 100. - Ordena un array de
Libro
por su año de publicación usandoComparator
y lambda. - Convierte un array de
Persona
en una lista solo con los nombres en mayúscula.
Conclusión
Con las funciones lambda y la API de Streams, trabajar con objetos y arrays en Java se vuelve mucho más eficiente y expresivo. Estos conceptos son fundamentales para dominar Java moderno.