Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Transformación de Elementos con el Método map() | Operaciones Intermedias en Stream API
Stream API

bookTransformación de Elementos con el Método map()

Ya estás familiarizado con el concepto de operaciones intermedias en la Stream API. Estas operaciones transforman los elementos del stream y devuelven un nuevo stream sin modificar el original. Un método de este tipo es map().

El método map() recibe una Function, que se aplica a cada elemento del stream. Los resultados se recopilan en un nuevo stream, mientras que el stream original permanece sin cambios:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – el tipo de elementos en el stream original;
  • R – el tipo de elementos en el nuevo stream (después de la transformación).

En esencia, se pasa un tipo T, que se transforma en el tipo R. Por eso se utiliza map() cuando es necesario cambiar el tipo de dato de un stream.

Aplicación práctica

Supongamos que es necesario ajustar una lista de precios añadiendo un 10% de impuesto a cada uno. Este es un escenario común en cálculos financieros, como la aplicación de impuestos sobre ventas a los precios de productos.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.List; import java.util.Arrays; public class Main { public static void main(String[] args) { List<Double> prices = Arrays.asList(100.0, 200.0, 50.0); // Apply a 10% tax to each price List<Double> finalPrices = prices.stream() .map(price -> price * 1.1) .toList(); System.out.println(finalPrices); } }

En este ejemplo, cada precio en la lista se incrementa en un 10% utilizando el método map().

Cada valor se multiplica por 1.1 para considerar el impuesto y los resultados se recopilan en una nueva lista. Esta lista transformada puede utilizarse para posteriores cálculos, como la generación de facturas o informes financieros.

Tipo primitivo

A diferencia del método map habitual, que devuelve un stream de objetos, mapToInt(), mapToLong() y mapToDouble() devuelven streams de tipos primitivos, lo que reduce el consumo de memoria y mejora el rendimiento.

Ejemplo práctico

El siguiente ejemplo convierte una lista de cadenas numéricas en streams primitivos e imprime los valores.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132
package com.example; import java.util.List; import java.util.stream.IntStream; import java.util.stream.LongStream; import java.util.stream.DoubleStream; public class Main { public static void main(String[] args) { List<String> numbers = List.of("10", "20", "30", "40"); // Convert to `IntStream` IntStream intStream = numbers.stream() .mapToInt(Integer::parseInt); System.out.print("IntStream: "); intStream.forEach(n -> System.out.print(n + " ")); System.out.println(); // Convert to `LongStream` LongStream longStream = numbers.stream() .mapToLong(Long::parseLong); System.out.print("LongStream: "); longStream.forEach(n -> System.out.print(n + " ")); System.out.println(); // Convert to `DoubleStream` DoubleStream doubleStream = numbers.stream() .mapToDouble(Double::parseDouble); System.out.print("DoubleStream: "); doubleStream.forEach(n -> System.out.print(n + " ")); } }

Este ejemplo procesa una lista de cadenas numéricas.

Primero, mapToInt() convierte los valores en un IntStream, imprimiendo cada número como un entero. A continuación, mapToLong() crea un LongStream, manteniendo los mismos valores numéricos pero en el tipo long. Finalmente, mapToDouble() transforma los datos en un DoubleStream, convirtiendo los enteros en números decimales.

El uso de streams primitivos garantiza un manejo eficiente de los datos numéricos y evita la creación innecesaria de objetos.

1. ¿Qué hace el método map() en la Stream API?

2. ¿Qué tipo de interfaz funcional debe aceptar el método map()?

question mark

¿Qué hace el método map() en la Stream API?

Select the correct answer

question mark

¿Qué tipo de interfaz funcional debe aceptar el método map()?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 2.33

bookTransformación de Elementos con el Método map()

Desliza para mostrar el menú

Ya estás familiarizado con el concepto de operaciones intermedias en la Stream API. Estas operaciones transforman los elementos del stream y devuelven un nuevo stream sin modificar el original. Un método de este tipo es map().

El método map() recibe una Function, que se aplica a cada elemento del stream. Los resultados se recopilan en un nuevo stream, mientras que el stream original permanece sin cambios:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – el tipo de elementos en el stream original;
  • R – el tipo de elementos en el nuevo stream (después de la transformación).

En esencia, se pasa un tipo T, que se transforma en el tipo R. Por eso se utiliza map() cuando es necesario cambiar el tipo de dato de un stream.

Aplicación práctica

Supongamos que es necesario ajustar una lista de precios añadiendo un 10% de impuesto a cada uno. Este es un escenario común en cálculos financieros, como la aplicación de impuestos sobre ventas a los precios de productos.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.List; import java.util.Arrays; public class Main { public static void main(String[] args) { List<Double> prices = Arrays.asList(100.0, 200.0, 50.0); // Apply a 10% tax to each price List<Double> finalPrices = prices.stream() .map(price -> price * 1.1) .toList(); System.out.println(finalPrices); } }

En este ejemplo, cada precio en la lista se incrementa en un 10% utilizando el método map().

Cada valor se multiplica por 1.1 para considerar el impuesto y los resultados se recopilan en una nueva lista. Esta lista transformada puede utilizarse para posteriores cálculos, como la generación de facturas o informes financieros.

Tipo primitivo

A diferencia del método map habitual, que devuelve un stream de objetos, mapToInt(), mapToLong() y mapToDouble() devuelven streams de tipos primitivos, lo que reduce el consumo de memoria y mejora el rendimiento.

Ejemplo práctico

El siguiente ejemplo convierte una lista de cadenas numéricas en streams primitivos e imprime los valores.

Main.java

Main.java

copy
1234567891011121314151617181920212223242526272829303132
package com.example; import java.util.List; import java.util.stream.IntStream; import java.util.stream.LongStream; import java.util.stream.DoubleStream; public class Main { public static void main(String[] args) { List<String> numbers = List.of("10", "20", "30", "40"); // Convert to `IntStream` IntStream intStream = numbers.stream() .mapToInt(Integer::parseInt); System.out.print("IntStream: "); intStream.forEach(n -> System.out.print(n + " ")); System.out.println(); // Convert to `LongStream` LongStream longStream = numbers.stream() .mapToLong(Long::parseLong); System.out.print("LongStream: "); longStream.forEach(n -> System.out.print(n + " ")); System.out.println(); // Convert to `DoubleStream` DoubleStream doubleStream = numbers.stream() .mapToDouble(Double::parseDouble); System.out.print("DoubleStream: "); doubleStream.forEach(n -> System.out.print(n + " ")); } }

Este ejemplo procesa una lista de cadenas numéricas.

Primero, mapToInt() convierte los valores en un IntStream, imprimiendo cada número como un entero. A continuación, mapToLong() crea un LongStream, manteniendo los mismos valores numéricos pero en el tipo long. Finalmente, mapToDouble() transforma los datos en un DoubleStream, convirtiendo los enteros en números decimales.

El uso de streams primitivos garantiza un manejo eficiente de los datos numéricos y evita la creación innecesaria de objetos.

1. ¿Qué hace el método map() en la Stream API?

2. ¿Qué tipo de interfaz funcional debe aceptar el método map()?

question mark

¿Qué hace el método map() en la Stream API?

Select the correct answer

question mark

¿Qué tipo de interfaz funcional debe aceptar el método map()?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 1
some-alt