Alkioiden Muuntaminen Map()-Metodilla
Olet jo perehtynyt välivaiheen operaatioiden käsitteeseen Stream API:ssa. Nämä operaatiot muuntavat virran alkioita ja palauttavat uuden virran muuttamatta alkuperäistä virtaa. Yksi tällainen metodi on map().
Metodi map() ottaa vastaan Function-funktion, jota sovelletaan jokaiseen alkioon virrassa. Tulokset kerätään uuteen virtaan, kun taas alkuperäinen virta säilyy muuttumattomana:
Stream<T> map(Function<? super T, ? extends R> mapper);
T– alkuperäisen virran alkioiden tyyppi;R– uuden virran alkioiden tyyppi (muunnoksen jälkeen).
Käytännössä annetaan tyyppi T, joka muunnetaan tyypiksi R. Siksi käytetään map()-metodia, kun on tarpeen muuttaa virran tietotyyppiä.
Käytännön sovellus
Oletetaan, että täytyy muokata hintalistaa lisäämällä jokaiseen hintaan 10 % vero. Tämä on yleinen tilanne talouslaskelmissa, kuten arvonlisäveron lisääminen tuotteiden hintoihin.
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); } }
Tässä esimerkissä jokainen hinta listassa kasvatetaan 10 % käyttämällä map()-metodia.
Jokainen arvo kerrotaan 1.1:llä veron huomioimiseksi, ja tulokset kerätään uuteen listaan. Tätä muunnettua listaa voidaan käyttää jatko-laskelmissa, kuten laskujen tai talousraporttien laatimisessa.
Alkeistyyppi
Toisin kuin tavallinen map-metodi, joka palauttaa olioiden streamin, mapToInt(), mapToLong() ja mapToDouble() palauttavat primitivityyppien streamit, mikä vähentää muistikuormitusta ja parantaa suorituskykyä.
Käytännön esimerkki
Seuraava esimerkki muuntaa numeeristen merkkijonojen listan primitivestreamiksi ja tulostaa arvot.
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 + " ")); } }
Tämä esimerkki käsittelee luetteloa numeerisista merkkijonoista.
Ensin mapToInt() muuntaa arvot IntStream-virraksi, tulostaen jokaisen luvun kokonaislukuna.
Seuraavaksi mapToLong() luo LongStream-virran, säilyttäen samat numeeriset arvot, mutta long-tyyppisinä.
Lopuksi mapToDouble() muuntaa datan DoubleStream-virraksi, muuntaen kokonaisluvut desimaaliluvuiksi.
Primitivivirtojen käyttö mahdollistaa tehokkaan numeerisen datan käsittelyn ja välttää tarpeettoman olioiden luonnin.
1. Mitä map()-metodi tekee Stream API:ssa?
2. Minkä tyyppinen funktionaalinen rajapinta map()-metodin tulisi hyväksyä?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you show an example of using the map() method in Java?
What are some common use cases for mapToInt(), mapToLong(), and mapToDouble()?
How do I choose between using map() and the primitive mapping methods?
Awesome!
Completion rate improved to 2.33
Alkioiden Muuntaminen Map()-Metodilla
Pyyhkäise näyttääksesi valikon
Olet jo perehtynyt välivaiheen operaatioiden käsitteeseen Stream API:ssa. Nämä operaatiot muuntavat virran alkioita ja palauttavat uuden virran muuttamatta alkuperäistä virtaa. Yksi tällainen metodi on map().
Metodi map() ottaa vastaan Function-funktion, jota sovelletaan jokaiseen alkioon virrassa. Tulokset kerätään uuteen virtaan, kun taas alkuperäinen virta säilyy muuttumattomana:
Stream<T> map(Function<? super T, ? extends R> mapper);
T– alkuperäisen virran alkioiden tyyppi;R– uuden virran alkioiden tyyppi (muunnoksen jälkeen).
Käytännössä annetaan tyyppi T, joka muunnetaan tyypiksi R. Siksi käytetään map()-metodia, kun on tarpeen muuttaa virran tietotyyppiä.
Käytännön sovellus
Oletetaan, että täytyy muokata hintalistaa lisäämällä jokaiseen hintaan 10 % vero. Tämä on yleinen tilanne talouslaskelmissa, kuten arvonlisäveron lisääminen tuotteiden hintoihin.
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); } }
Tässä esimerkissä jokainen hinta listassa kasvatetaan 10 % käyttämällä map()-metodia.
Jokainen arvo kerrotaan 1.1:llä veron huomioimiseksi, ja tulokset kerätään uuteen listaan. Tätä muunnettua listaa voidaan käyttää jatko-laskelmissa, kuten laskujen tai talousraporttien laatimisessa.
Alkeistyyppi
Toisin kuin tavallinen map-metodi, joka palauttaa olioiden streamin, mapToInt(), mapToLong() ja mapToDouble() palauttavat primitivityyppien streamit, mikä vähentää muistikuormitusta ja parantaa suorituskykyä.
Käytännön esimerkki
Seuraava esimerkki muuntaa numeeristen merkkijonojen listan primitivestreamiksi ja tulostaa arvot.
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 + " ")); } }
Tämä esimerkki käsittelee luetteloa numeerisista merkkijonoista.
Ensin mapToInt() muuntaa arvot IntStream-virraksi, tulostaen jokaisen luvun kokonaislukuna.
Seuraavaksi mapToLong() luo LongStream-virran, säilyttäen samat numeeriset arvot, mutta long-tyyppisinä.
Lopuksi mapToDouble() muuntaa datan DoubleStream-virraksi, muuntaen kokonaisluvut desimaaliluvuiksi.
Primitivivirtojen käyttö mahdollistaa tehokkaan numeerisen datan käsittelyn ja välttää tarpeettoman olioiden luonnin.
1. Mitä map()-metodi tekee Stream API:ssa?
2. Minkä tyyppinen funktionaalinen rajapinta map()-metodin tulisi hyväksyä?
Kiitos palautteestasi!