Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Transformering af elementer med map()-metoden | Mellemliggende Operationer i Stream API
Stream API

bookTransformering af elementer med map()-metoden

Du er allerede bekendt med begrebet mellemoperationer i Stream API. Disse operationer transformerer elementer i en stream og returnerer en ny stream uden at ændre den oprindelige. En sådan metode er map().

Metoden map() tager en Function, som anvendes på hvert element i streamen. Resultaterne samles i en ny stream, mens den oprindelige stream forbliver uændret:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – typen af elementer i den oprindelige stream;
  • R – typen af elementer i den nye stream (efter transformation).

Grundlæggende sender vi en type T, som bliver transformeret til typen R. Derfor anvendes map(), når det er nødvendigt at ændre datatype for en stream.

Praktisk anvendelse

Antag, at du skal justere en liste af priser ved at tilføje 10% moms til hver enkelt. Dette er et almindeligt scenarie i finansielle beregninger, såsom at pålægge 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 dette eksempel øges hver pris i listen med 10% ved hjælp af map()-metoden.

Hver værdi ganges med 1,1 for at inkludere moms, og resultaterne samles i en ny liste. Denne transformerede liste kan derefter anvendes til yderligere beregninger, såsom oprettelse af fakturaer eller finansielle rapporter.

Primitiv type

I modsætning til den almindelige map-metode, som returnerer en stream af objekter, returnerer mapToInt(), mapToLong() og mapToDouble() streams af primitivtyper, hvilket reducerer hukommelsesforbrug og forbedrer ydelse.

Praktisk eksempel

Følgende eksempel konverterer en liste af numeriske strenge til primitiv streams og udskriver værdierne.

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 eksempel behandler en liste af numeriske strenge.

Først konverterer mapToInt() værdierne til en IntStream, hvor hver værdi udskrives som et heltal. Dernæst opretter mapToLong() en LongStream, hvor de samme numeriske værdier bevares, men i typen long. Til sidst transformerer mapToDouble() dataene til en DoubleStream, hvor heltallene konverteres til decimaltal.

Brug af primitiv streams sikrer effektiv håndtering af numeriske data og undgår unødvendig objektoprettelse.

1. Hvad gør map()-metoden i Stream API?

2. Hvilken type funktionelt interface skal map()-metoden acceptere?

question mark

Hvad gør map()-metoden i Stream API?

Select the correct answer

question mark

Hvilken type funktionelt interface skal map()-metoden acceptere?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 2.33

bookTransformering af elementer med map()-metoden

Stryg for at vise menuen

Du er allerede bekendt med begrebet mellemoperationer i Stream API. Disse operationer transformerer elementer i en stream og returnerer en ny stream uden at ændre den oprindelige. En sådan metode er map().

Metoden map() tager en Function, som anvendes på hvert element i streamen. Resultaterne samles i en ny stream, mens den oprindelige stream forbliver uændret:

Stream<T> map(Function<? super T, ? extends R> mapper);
  • T – typen af elementer i den oprindelige stream;
  • R – typen af elementer i den nye stream (efter transformation).

Grundlæggende sender vi en type T, som bliver transformeret til typen R. Derfor anvendes map(), når det er nødvendigt at ændre datatype for en stream.

Praktisk anvendelse

Antag, at du skal justere en liste af priser ved at tilføje 10% moms til hver enkelt. Dette er et almindeligt scenarie i finansielle beregninger, såsom at pålægge 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 dette eksempel øges hver pris i listen med 10% ved hjælp af map()-metoden.

Hver værdi ganges med 1,1 for at inkludere moms, og resultaterne samles i en ny liste. Denne transformerede liste kan derefter anvendes til yderligere beregninger, såsom oprettelse af fakturaer eller finansielle rapporter.

Primitiv type

I modsætning til den almindelige map-metode, som returnerer en stream af objekter, returnerer mapToInt(), mapToLong() og mapToDouble() streams af primitivtyper, hvilket reducerer hukommelsesforbrug og forbedrer ydelse.

Praktisk eksempel

Følgende eksempel konverterer en liste af numeriske strenge til primitiv streams og udskriver værdierne.

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 eksempel behandler en liste af numeriske strenge.

Først konverterer mapToInt() værdierne til en IntStream, hvor hver værdi udskrives som et heltal. Dernæst opretter mapToLong() en LongStream, hvor de samme numeriske værdier bevares, men i typen long. Til sidst transformerer mapToDouble() dataene til en DoubleStream, hvor heltallene konverteres til decimaltal.

Brug af primitiv streams sikrer effektiv håndtering af numeriske data og undgår unødvendig objektoprettelse.

1. Hvad gør map()-metoden i Stream API?

2. Hvilken type funktionelt interface skal map()-metoden acceptere?

question mark

Hvad gør map()-metoden i Stream API?

Select the correct answer

question mark

Hvilken type funktionelt interface skal map()-metoden acceptere?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 1
some-alt