Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Transformando Elementos com o Método map() | Operações Intermediárias na Stream API
Stream API

bookTransformando Elementos com o Método map()

Você já está familiarizado com o conceito de operações intermediárias na Stream API. Essas operações transformam os elementos do stream e retornam um novo stream sem modificar o original. Um desses métodos é o map().

O método map() recebe uma Function, que é aplicada a cada elemento do stream. Os resultados são coletados em um novo stream, enquanto o stream original permanece inalterado:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – o tipo dos elementos no stream original;
  • R – o tipo dos elementos no novo stream (após a transformação).

Basicamente, passamos um tipo T, que é transformado em tipo R. Por isso utilizamos o map() quando é necessário alterar o tipo de dado de um stream.

Aplicação Prática

Suponha que seja necessário ajustar uma lista de preços adicionando um imposto de 10% a cada um. Este é um cenário comum em cálculos financeiros, como a aplicação de imposto sobre vendas aos preços dos produtos.

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); } }

Neste exemplo, cada preço na lista é aumentado em 10% utilizando o método map().

Cada valor é multiplicado por 1,1 para considerar o imposto e os resultados são coletados em uma nova lista. Esta lista transformada pode então ser utilizada para outras operações, como geração de notas fiscais ou relatórios financeiros.

Tipo Primitivo

Diferente do método map comum, que retorna um stream de objetos, mapToInt(), mapToLong() e mapToDouble() retornam streams de tipos primitivos, reduzindo o consumo de memória e melhorando o desempenho.

Exemplo Prático

O exemplo a seguir converte uma lista de strings numéricas em streams primitivos e exibe os 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 exemplo processa uma lista de strings numéricas.

Primeiro, mapToInt() converte os valores em um IntStream, imprimindo cada número como um inteiro. Em seguida, mapToLong() cria um LongStream, mantendo os mesmos valores numéricos, mas no tipo long. Por fim, mapToDouble() transforma os dados em um DoubleStream, convertendo os inteiros em números decimais.

O uso de streams primitivos garante o processamento eficiente de dados numéricos enquanto evita a criação desnecessária de objetos.

1. O que o método map() faz na Stream API?

2. Que tipo de interface funcional o método map() deve aceitar?

question mark

O que o método map() faz na Stream API?

Select the correct answer

question mark

Que tipo de interface funcional o método map() deve aceitar?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you show an example of using the map() method in Java?

What are some common use cases for mapToInt(), mapToLong(), and mapToDouble()?

How do I choose between using map() and the primitive mapping methods?

Awesome!

Completion rate improved to 2.33

bookTransformando Elementos com o Método map()

Deslize para mostrar o menu

Você já está familiarizado com o conceito de operações intermediárias na Stream API. Essas operações transformam os elementos do stream e retornam um novo stream sem modificar o original. Um desses métodos é o map().

O método map() recebe uma Function, que é aplicada a cada elemento do stream. Os resultados são coletados em um novo stream, enquanto o stream original permanece inalterado:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – o tipo dos elementos no stream original;
  • R – o tipo dos elementos no novo stream (após a transformação).

Basicamente, passamos um tipo T, que é transformado em tipo R. Por isso utilizamos o map() quando é necessário alterar o tipo de dado de um stream.

Aplicação Prática

Suponha que seja necessário ajustar uma lista de preços adicionando um imposto de 10% a cada um. Este é um cenário comum em cálculos financeiros, como a aplicação de imposto sobre vendas aos preços dos produtos.

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); } }

Neste exemplo, cada preço na lista é aumentado em 10% utilizando o método map().

Cada valor é multiplicado por 1,1 para considerar o imposto e os resultados são coletados em uma nova lista. Esta lista transformada pode então ser utilizada para outras operações, como geração de notas fiscais ou relatórios financeiros.

Tipo Primitivo

Diferente do método map comum, que retorna um stream de objetos, mapToInt(), mapToLong() e mapToDouble() retornam streams de tipos primitivos, reduzindo o consumo de memória e melhorando o desempenho.

Exemplo Prático

O exemplo a seguir converte uma lista de strings numéricas em streams primitivos e exibe os 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 exemplo processa uma lista de strings numéricas.

Primeiro, mapToInt() converte os valores em um IntStream, imprimindo cada número como um inteiro. Em seguida, mapToLong() cria um LongStream, mantendo os mesmos valores numéricos, mas no tipo long. Por fim, mapToDouble() transforma os dados em um DoubleStream, convertendo os inteiros em números decimais.

O uso de streams primitivos garante o processamento eficiente de dados numéricos enquanto evita a criação desnecessária de objetos.

1. O que o método map() faz na Stream API?

2. Que tipo de interface funcional o método map() deve aceitar?

question mark

O que o método map() faz na Stream API?

Select the correct answer

question mark

Que tipo de interface funcional o método map() deve aceitar?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 1
some-alt