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 | Section
Stream API i Java

bookTransformering af Elementer med map()-Metoden

Stryg for at vise menuen

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

Metoden map() tager en Function, som anvendes på hvert element i strømmen. Resultaterne samles i en ny strøm, mens den oprindelige strøm 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 videregives en type T, som transformeres til typen R. Derfor anvendes map(), når det er nødvendigt at ændre datatypen for en stream.

Praktisk anvendelse

Antag, at det er nødvendigt at justere en liste af priser ved at tilføje 10% moms til hver enkelt. Dette er et almindeligt scenarie i finansielle beregninger, såsom anvendelse af 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 generering 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 primitiver, hvilket reducerer hukommelsesforbruget og forbedrer ydelsen.

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 long-typen. 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 1. Kapitel 16

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

Sektion 1. Kapitel 16
some-alt