Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Transformere Elementer med map()-Metoden | Intermediære Operasjoner i Stream API
Stream-API

bookTransformere Elementer med map()-Metoden

Du er allerede kjent med konseptet mellomliggende operasjoner i Stream API. Disse operasjonene transformerer elementene i strømmen og returnerer en ny strøm uten å endre den opprinnelige. En slik metode er map().

Metoden map() tar en Function, som brukes på hvert element i strømmen. Resultatene samles i en ny strøm, mens den opprinnelige strømmen forblir uendret:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – typen elementer i den opprinnelige strømmen;
  • R – typen elementer i den nye strømmen (etter transformasjon).

I hovedsak sender vi inn en type T, som blir transformert til type R. Derfor bruker vi map() når vi trenger å endre datatypen til en strøm.

Praktisk anvendelse

Anta at du må justere en liste med priser ved å legge til 10 % skatt på hver. Dette er et vanlig scenario i finansielle beregninger, som å legge til merverdiavgiftproduktpriser.

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 dette eksempelet økes hver pris i listen med 10 % ved bruk av map()-metoden.

Hver verdi multipliseres med 1,1 for å ta høyde for avgiften, og resultatene samles i en ny liste. Denne transformerte listen kan deretter brukes til videre beregninger, som å generere fakturaer eller finansielle rapporter.

Primitiv type

I motsetning til den vanlige map-metoden, som returnerer en stream av objekter, returnerer mapToInt(), mapToLong() og mapToDouble() streams av primitiver, noe som reduserer minneforbruket og forbedrer ytelsen.

Praktisk eksempel

Følgende eksempel konverterer en liste med numeriske strenger til primitive streams og skriver ut verdiene.

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

Dette eksempelet behandler en liste med numeriske strenger.

Først konverterer mapToInt() verdiene til en IntStream, og skriver ut hvert tall som et heltall. Deretter oppretter mapToLong() en LongStream, og beholder de samme numeriske verdiene, men i long-typen. Til slutt transformerer mapToDouble() dataene til en DoubleStream, og konverterer heltallene til desimaltall.

Bruk av primitive strømmer sikrer effektiv håndtering av numeriske data og unngår unødvendig objektskaping.

1. Hva gjør map()-metoden i Stream API?

2. Hvilken type funksjonelt grensesnitt skal map()-metoden akseptere?

question mark

Hva gjør map()-metoden i Stream API?

Select the correct answer

question mark

Hvilken type funksjonelt grensesnitt skal map()-metoden akseptere?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.33

bookTransformere Elementer med map()-Metoden

Sveip for å vise menyen

Du er allerede kjent med konseptet mellomliggende operasjoner i Stream API. Disse operasjonene transformerer elementene i strømmen og returnerer en ny strøm uten å endre den opprinnelige. En slik metode er map().

Metoden map() tar en Function, som brukes på hvert element i strømmen. Resultatene samles i en ny strøm, mens den opprinnelige strømmen forblir uendret:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – typen elementer i den opprinnelige strømmen;
  • R – typen elementer i den nye strømmen (etter transformasjon).

I hovedsak sender vi inn en type T, som blir transformert til type R. Derfor bruker vi map() når vi trenger å endre datatypen til en strøm.

Praktisk anvendelse

Anta at du må justere en liste med priser ved å legge til 10 % skatt på hver. Dette er et vanlig scenario i finansielle beregninger, som å legge til merverdiavgiftproduktpriser.

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 dette eksempelet økes hver pris i listen med 10 % ved bruk av map()-metoden.

Hver verdi multipliseres med 1,1 for å ta høyde for avgiften, og resultatene samles i en ny liste. Denne transformerte listen kan deretter brukes til videre beregninger, som å generere fakturaer eller finansielle rapporter.

Primitiv type

I motsetning til den vanlige map-metoden, som returnerer en stream av objekter, returnerer mapToInt(), mapToLong() og mapToDouble() streams av primitiver, noe som reduserer minneforbruket og forbedrer ytelsen.

Praktisk eksempel

Følgende eksempel konverterer en liste med numeriske strenger til primitive streams og skriver ut verdiene.

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

Dette eksempelet behandler en liste med numeriske strenger.

Først konverterer mapToInt() verdiene til en IntStream, og skriver ut hvert tall som et heltall. Deretter oppretter mapToLong() en LongStream, og beholder de samme numeriske verdiene, men i long-typen. Til slutt transformerer mapToDouble() dataene til en DoubleStream, og konverterer heltallene til desimaltall.

Bruk av primitive strømmer sikrer effektiv håndtering av numeriske data og unngår unødvendig objektskaping.

1. Hva gjør map()-metoden i Stream API?

2. Hvilken type funksjonelt grensesnitt skal map()-metoden akseptere?

question mark

Hva gjør map()-metoden i Stream API?

Select the correct answer

question mark

Hvilken type funksjonelt grensesnitt skal map()-metoden akseptere?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 1
some-alt