Transformere 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 merverdiavgift på produktpriser.
Main.java
1234567891011121314151617package 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
1234567891011121314151617181920212223242526272829303132package 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?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
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
Transformere 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 merverdiavgift på produktpriser.
Main.java
1234567891011121314151617package 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
1234567891011121314151617181920212223242526272829303132package 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?
Takk for tilbakemeldingene dine!