Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Transformera element med metoden map() | Intermediära Operationer i Stream API
Stream API

bookTransformera element med metoden map()

Du är redan bekant med konceptet intermediära operationer i Stream API. Dessa operationer transformerar element i en stream och returnerar en ny stream utan att ändra den ursprungliga. En sådan metod är map().

Metoden map() tar en Function, som appliceras på varje element i streamen. Resultaten samlas i en ny stream, medan den ursprungliga streamen förblir oförändrad:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – typen av element i ursprungsströmmen;
  • R – typen av element i den nya strömmen (efter transformation).

I huvudsak skickar vi en typ T, som transformeras till typ R. Därför används map() när det finns behov av att ändra datatypen för en ström.

Praktisk tillämpning

Antag att det finns behov av att justera en lista med priser genom att lägga till 10 % moms på varje. Detta är ett vanligt scenario vid finansiella beräkningar, såsom tillämpning av momsproduktpriser.

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

I detta exempel ökas varje pris i listan med 10 % med hjälp av metoden map().

Varje värde multipliceras med 1,1 för att ta hänsyn till skatt och resultaten samlas i en ny lista. Denna transformerade lista kan sedan användas för vidare beräkningar, såsom att skapa fakturor eller finansiella rapporter.

Primitiv typ

Till skillnad från den vanliga map-metoden, som returnerar en ström av objekt, returnerar mapToInt(), mapToLong() och mapToDouble() strömmar av primitiva typer, vilket minskar minnesanvändningen och förbättrar prestandan.

Praktiskt exempel

Följande exempel konverterar en lista av numeriska strängar till primitiva strömmar och skriver ut värdena.

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

Detta exempel behandlar en lista av numeriska strängar.

Först konverterar mapToInt() värdena till en IntStream, och skriver ut varje tal som ett heltal. Därefter skapar mapToLong() en LongStream, och behåller samma numeriska värden men i typen long. Slutligen omvandlar mapToDouble() datan till en DoubleStream, och konverterar heltalen till decimaltal.

Att använda primitiva strömmar säkerställer effektiv hantering av numerisk data samtidigt som onödig objektgenerering undviks.

1. Vad gör metoden map() i Stream API?

2. Vilken typ av funktionellt gränssnitt ska metoden map() acceptera?

question mark

Vad gör metoden map() i Stream API?

Select the correct answer

question mark

Vilken typ av funktionellt gränssnitt ska metoden map() acceptera?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 2.33

bookTransformera element med metoden map()

Svep för att visa menyn

Du är redan bekant med konceptet intermediära operationer i Stream API. Dessa operationer transformerar element i en stream och returnerar en ny stream utan att ändra den ursprungliga. En sådan metod är map().

Metoden map() tar en Function, som appliceras på varje element i streamen. Resultaten samlas i en ny stream, medan den ursprungliga streamen förblir oförändrad:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – typen av element i ursprungsströmmen;
  • R – typen av element i den nya strömmen (efter transformation).

I huvudsak skickar vi en typ T, som transformeras till typ R. Därför används map() när det finns behov av att ändra datatypen för en ström.

Praktisk tillämpning

Antag att det finns behov av att justera en lista med priser genom att lägga till 10 % moms på varje. Detta är ett vanligt scenario vid finansiella beräkningar, såsom tillämpning av momsproduktpriser.

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

I detta exempel ökas varje pris i listan med 10 % med hjälp av metoden map().

Varje värde multipliceras med 1,1 för att ta hänsyn till skatt och resultaten samlas i en ny lista. Denna transformerade lista kan sedan användas för vidare beräkningar, såsom att skapa fakturor eller finansiella rapporter.

Primitiv typ

Till skillnad från den vanliga map-metoden, som returnerar en ström av objekt, returnerar mapToInt(), mapToLong() och mapToDouble() strömmar av primitiva typer, vilket minskar minnesanvändningen och förbättrar prestandan.

Praktiskt exempel

Följande exempel konverterar en lista av numeriska strängar till primitiva strömmar och skriver ut värdena.

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

Detta exempel behandlar en lista av numeriska strängar.

Först konverterar mapToInt() värdena till en IntStream, och skriver ut varje tal som ett heltal. Därefter skapar mapToLong() en LongStream, och behåller samma numeriska värden men i typen long. Slutligen omvandlar mapToDouble() datan till en DoubleStream, och konverterar heltalen till decimaltal.

Att använda primitiva strömmar säkerställer effektiv hantering av numerisk data samtidigt som onödig objektgenerering undviks.

1. Vad gör metoden map() i Stream API?

2. Vilken typ av funktionellt gränssnitt ska metoden map() acceptera?

question mark

Vad gör metoden map() i Stream API?

Select the correct answer

question mark

Vilken typ av funktionellt gränssnitt ska metoden map() acceptera?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1
some-alt