Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Trasformazione degli Elementi con il Metodo map() | Operazioni Intermedie Nello Stream API
Stream API

bookTrasformazione degli Elementi con il Metodo map()

Hai già familiarità con il concetto di operazioni intermedie nell'Stream API. Queste operazioni trasformano gli elementi dello stream e restituiscono un nuovo stream senza modificare quello originale. Un metodo di questo tipo è map().

Il metodo map() accetta una Function, che viene applicata a ogni elemento dello stream. I risultati vengono raccolti in un nuovo stream, mentre lo stream originale rimane invariato:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – il tipo di elementi nello stream originale;
  • R – il tipo di elementi nel nuovo stream (dopo la trasformazione).

Fondamentalmente, si passa un tipo T, che viene trasformato in un tipo R. Per questo motivo si utilizza map() quando è necessario modificare il tipo di dato di uno stream.

Applicazione pratica

Supponiamo sia necessario modificare un elenco di prezzi aggiungendo una tassa del 10% a ciascuno. Questo è uno scenario comune nei calcoli finanziari, come l'applicazione dell'IVA ai prezzi dei prodotti.

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

In questo esempio, ogni prezzo nella lista viene aumentato del 10% utilizzando il metodo map().

Ogni valore viene moltiplicato per 1.1 per includere la tassa e i risultati vengono raccolti in una nuova lista. Questa lista trasformata può essere utilizzata per ulteriori calcoli, come la generazione di fatture o report finanziari.

Tipo Primitivo

A differenza del metodo map tradizionale, che restituisce uno stream di oggetti, mapToInt(), mapToLong() e mapToDouble() restituiscono stream di tipi primitivi, riducendo il carico di memoria e migliorando le prestazioni.

Esempio pratico

Il seguente esempio converte una lista di stringhe numeriche in stream primitivi e stampa i valori.

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

Questo esempio elabora una lista di stringhe numeriche.

Per prima cosa, mapToInt() converte i valori in un IntStream, stampando ogni numero come intero. Successivamente, mapToLong() crea un LongStream, mantenendo gli stessi valori numerici ma nel tipo long. Infine, mapToDouble() trasforma i dati in un DoubleStream, convertendo gli interi in numeri decimali.

L'utilizzo di stream primitivi garantisce una gestione efficiente dei dati numerici evitando la creazione non necessaria di oggetti.

1. Cosa fa il metodo map() nello Stream API?

2. Che tipo di interfaccia funzionale dovrebbe accettare il metodo map()?

question mark

Cosa fa il metodo map() nello Stream API?

Select the correct answer

question mark

Che tipo di interfaccia funzionale dovrebbe accettare il metodo map()?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 1

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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

bookTrasformazione degli Elementi con il Metodo map()

Scorri per mostrare il menu

Hai già familiarità con il concetto di operazioni intermedie nell'Stream API. Queste operazioni trasformano gli elementi dello stream e restituiscono un nuovo stream senza modificare quello originale. Un metodo di questo tipo è map().

Il metodo map() accetta una Function, che viene applicata a ogni elemento dello stream. I risultati vengono raccolti in un nuovo stream, mentre lo stream originale rimane invariato:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – il tipo di elementi nello stream originale;
  • R – il tipo di elementi nel nuovo stream (dopo la trasformazione).

Fondamentalmente, si passa un tipo T, che viene trasformato in un tipo R. Per questo motivo si utilizza map() quando è necessario modificare il tipo di dato di uno stream.

Applicazione pratica

Supponiamo sia necessario modificare un elenco di prezzi aggiungendo una tassa del 10% a ciascuno. Questo è uno scenario comune nei calcoli finanziari, come l'applicazione dell'IVA ai prezzi dei prodotti.

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

In questo esempio, ogni prezzo nella lista viene aumentato del 10% utilizzando il metodo map().

Ogni valore viene moltiplicato per 1.1 per includere la tassa e i risultati vengono raccolti in una nuova lista. Questa lista trasformata può essere utilizzata per ulteriori calcoli, come la generazione di fatture o report finanziari.

Tipo Primitivo

A differenza del metodo map tradizionale, che restituisce uno stream di oggetti, mapToInt(), mapToLong() e mapToDouble() restituiscono stream di tipi primitivi, riducendo il carico di memoria e migliorando le prestazioni.

Esempio pratico

Il seguente esempio converte una lista di stringhe numeriche in stream primitivi e stampa i valori.

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

Questo esempio elabora una lista di stringhe numeriche.

Per prima cosa, mapToInt() converte i valori in un IntStream, stampando ogni numero come intero. Successivamente, mapToLong() crea un LongStream, mantenendo gli stessi valori numerici ma nel tipo long. Infine, mapToDouble() trasforma i dati in un DoubleStream, convertendo gli interi in numeri decimali.

L'utilizzo di stream primitivi garantisce una gestione efficiente dei dati numerici evitando la creazione non necessaria di oggetti.

1. Cosa fa il metodo map() nello Stream API?

2. Che tipo di interfaccia funzionale dovrebbe accettare il metodo map()?

question mark

Cosa fa il metodo map() nello Stream API?

Select the correct answer

question mark

Che tipo di interfaccia funzionale dovrebbe accettare il metodo map()?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 1
some-alt