En Java, el método map()
es una herramienta muy útil que se utiliza para aplicar una función a cada elemento de una colección. Es una función de orden superior que toma una función como argumento y devuelve un nuevo Stream con los elementos transformados. En este artículo, vamos a discutir el método map()
en detalle y proporcionar algunos ejemplos prácticos.
Sintaxis del método map()
La sintaxis básica del método map()
en Java es la siguiente:
<R> Stream<R> map(Function<? super T,? extends R> mapper)
Donde:
R
: tipo de retorno del nuevo StreamT
: tipo de elementos de la colección originalmapper
: la función que se aplicará a cada elemento de la colección original
El método map()
toma una función que toma un objeto de tipo T
como entrada y devuelve un objeto de tipo R
. La función se aplica a cada elemento de la colección original, y el resultado se almacena en un nuevo Stream de tipo R
.
Ejemplos de uso del método map()
Supongamos que tenemos una lista de números enteros y queremos convertirla en una lista de cadenas. Podemos hacerlo fácilmente usando el método map()
de la siguiente manera:
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5);
List<String> cadenas = numeros.stream()
.map(n -> String.valueOf(n))
.collect(Collectors.toList());
System.out.println(cadenas);
En este ejemplo, estamos convirtiendo la lista de enteros en una lista de cadenas usando el método map() y la función lambda n -> String.valueOf(n). La función lambda toma un número entero como entrada y lo convierte en una cadena usando el método String.valueOf()
. Finalmente, usamos el método collect()
para almacenar los elementos del nuevo Stream en una lista.
La salida de este programa sería:
["1", "2", "3", "4", "5"]
Ejemplo 2: Convertir una lista de objetos en una lista de valores de propiedad
Supongamos que tenemos una lista de objetos y queremos crear una lista de los valores de una propiedad específica de esos objetos. Podemos hacerlo usando el método map() y una función lambda que acceda a la propiedad deseada. Por ejemplo:
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;
}
}
List<Persona> personas = Arrays.asList(new Persona("Juan", 30), new Persona("María", 25), new Persona("Pedro", 40));
List<String> nombres = personas.stream()
.map(p -> p.getNombre())
.collect(Collectors.toList());
System.out.println(nombres);
En este ejemplo, estamos creando una lista de nombres de personas a partir de una lista de objetos Persona
. Usamos el método map()
y la función lambda p -> p.getNombre()
para acceder al nombre de cada persona en la lista original. Finalmente, usamos el método `