Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Alkioiden Muuntaminen Map()-Metodilla | Välimuotoiset Operaatiot Stream API:ssa
Stream API

bookAlkioiden 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

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

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

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

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ä?

question mark

Mitä map()-metodi tekee Stream API:ssa?

Select the correct answer

question mark

Minkä tyyppinen funktionaalinen rajapinta map()-metodin tulisi hyväksyä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

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

bookAlkioiden 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

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

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

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

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ä?

question mark

Mitä map()-metodi tekee Stream API:ssa?

Select the correct answer

question mark

Minkä tyyppinen funktionaalinen rajapinta map()-metodin tulisi hyväksyä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1
some-alt