Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Virran Yhteenvetotilastojen Hakeminen Summarystatistics()-Menetelmällä | Stream API:n Pääteoperaatiot
Quizzes & Challenges
Quizzes
Challenges
/
Stream API

bookVirran Yhteenvetotilastojen Hakeminen Summarystatistics()-Menetelmällä

Kun käsitellään dataa, on usein tarpeen laskea tilastollisia mittareita kuten summa, keskiarvo, minimi, maksimi ja alkioiden määrä.

Olet jo oppinut, miten löytää minimi- ja maksimiarvot streamista, mutta on olemassa menetelmä, joka kerää kaikki nämä tilastotiedot kerralla. Java Stream API tarjoaa tähän tarkoitukseen erityisen metodin nimeltä summaryStatistics(), joka helpottaa yleisten tilastojen hakemista numeerisista streameista.

Metodi summaryStatistics()

Stream API tarjoaa myös erikoistuneita numeerisia streameja: IntStream, LongStream ja DoubleStream. Nämä toimivat kuten tavalliset streamit, mutta ne on optimoitu tiettyjä primitivityyppejä varten.

Jokainen näistä numeerisista streameista sisältää summaryStatistics()-metodin, joka palauttaa olion IntSummaryStatistics, LongSummaryStatistics tai DoubleSummaryStatistics tyypistä riippuen. Nämä oliot sisältävät keskeiset tilastolliset mittarit, kuten määrä, summa, minimi, maksimi ja keskiarvo.

IntSummaryStatistics summaryStatistics();
LongSummaryStatistics summaryStatistics();
DoubleSummaryStatistics summaryStatistics();

Kutsumalla summaryStatistics() numeeriselle streamille voit nopeasti kerätä ja analysoida tilastotietoja sen arvoista.

Keskeiset metodit

Javassa luokat IntSummaryStatistics, LongSummaryStatistics ja DoubleSummaryStatistics käytetään keräämään tilastoja numeerisista tiedoista. Ne tarjoavat joukon metodeja tärkeimpien tilastollisten mittareiden hakemiseen.

Käytännön esimerkki

Verkkokaupassa täytyy analysoida tuotteiden hintoja selvittääkseen minimi- ja maksimihinnan, keskihinnan sekä kokonaismäärän.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.List; import java.util.IntSummaryStatistics; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3500, 1200, 4000, 2500); IntSummaryStatistics stats = prices.stream() .collect(Collectors.summarizingInt(Integer::intValue)); System.out.println("Minimum price: " + stats.getMin()); System.out.println("Maximum price: " + stats.getMax()); System.out.println("Average price: " + stats.getAverage()); System.out.println("Total number of items: " + stats.getCount()); System.out.println("Total sum: " + stats.getSum()); } }

Tässä koodissa luodaan tuotehintojen lista ja muunnetaan se numeeriseksi virraksi. Metodi Collectors.summarizingInt(Integer::intValue) kerää tilastotiedot ja tallentaa ne IntSummaryStatistics-olioon. Tämän jälkeen käytetään metodeja getMin(), getMax(), getAverage(), getCount() ja getSum() tarvittavien arvojen hakemiseen.

Lisämenetelmät

Metodi combine() yhdistää kaksi tilasto-oliota. Tämä on hyödyllistä, kun dataa käsitellään useassa säikeessä tai kun tilastoja yhdistetään eri lähteistä.

Metodi accept() lisää manuaalisesti arvoja tilasto-olioon, mikä on hyödyllistä, kun dataa päivitetään dynaamisesti.

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; import java.util.IntSummaryStatistics; public class Main { public static void main(String[] args) { IntSummaryStatistics stats1 = new IntSummaryStatistics(); stats1.accept(1500); stats1.accept(2500); IntSummaryStatistics stats2 = new IntSummaryStatistics(); stats2.accept(3500); stats2.accept(4500); stats1.combine(stats2); System.out.println("Minimum price: " + stats1.getMin()); System.out.println("Maximum price: " + stats1.getMax()); System.out.println("Average price: " + stats1.getAverage()); System.out.println("Total number of items: " + stats1.getCount()); System.out.println("Total sum: " + stats1.getSum()); } }

Tässä esimerkissä luodaan kaksi IntSummaryStatistics-oliota, joihin kumpaankin lisätään arvoja käyttämällä accept()-metodia. combine()-metodi yhdistää sitten molempien olioiden tilastotiedot, päivittäen kokonaismäärän (count), summan (sum) sekä pienimmän ja suurimman arvon (min/max values).

Tämän seurauksena stats1 sisältää nyt kaikkien lukujen yhdistetyt tilastotiedot, jotka tulostetaan konsoliin.

1. Mitä luokkaa käytetään int-arvojen tilastojen keräämiseen Stream API:ssa?

2. Mikä menetelmä lisää arvon IntSummaryStatistics-olioon?

3. Mikä menetelmä yhdistää kaksi IntSummaryStatistics-oliota?

question mark

Mitä luokkaa käytetään int-arvojen tilastojen keräämiseen Stream API:ssa?

Select the correct answer

question mark

Mikä menetelmä lisää arvon IntSummaryStatistics-olioon?

Select the correct answer

question mark

Mikä menetelmä yhdistää kaksi IntSummaryStatistics-oliota?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 9

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Awesome!

Completion rate improved to 2.33

bookVirran Yhteenvetotilastojen Hakeminen Summarystatistics()-Menetelmällä

Pyyhkäise näyttääksesi valikon

Kun käsitellään dataa, on usein tarpeen laskea tilastollisia mittareita kuten summa, keskiarvo, minimi, maksimi ja alkioiden määrä.

Olet jo oppinut, miten löytää minimi- ja maksimiarvot streamista, mutta on olemassa menetelmä, joka kerää kaikki nämä tilastotiedot kerralla. Java Stream API tarjoaa tähän tarkoitukseen erityisen metodin nimeltä summaryStatistics(), joka helpottaa yleisten tilastojen hakemista numeerisista streameista.

Metodi summaryStatistics()

Stream API tarjoaa myös erikoistuneita numeerisia streameja: IntStream, LongStream ja DoubleStream. Nämä toimivat kuten tavalliset streamit, mutta ne on optimoitu tiettyjä primitivityyppejä varten.

Jokainen näistä numeerisista streameista sisältää summaryStatistics()-metodin, joka palauttaa olion IntSummaryStatistics, LongSummaryStatistics tai DoubleSummaryStatistics tyypistä riippuen. Nämä oliot sisältävät keskeiset tilastolliset mittarit, kuten määrä, summa, minimi, maksimi ja keskiarvo.

IntSummaryStatistics summaryStatistics();
LongSummaryStatistics summaryStatistics();
DoubleSummaryStatistics summaryStatistics();

Kutsumalla summaryStatistics() numeeriselle streamille voit nopeasti kerätä ja analysoida tilastotietoja sen arvoista.

Keskeiset metodit

Javassa luokat IntSummaryStatistics, LongSummaryStatistics ja DoubleSummaryStatistics käytetään keräämään tilastoja numeerisista tiedoista. Ne tarjoavat joukon metodeja tärkeimpien tilastollisten mittareiden hakemiseen.

Käytännön esimerkki

Verkkokaupassa täytyy analysoida tuotteiden hintoja selvittääkseen minimi- ja maksimihinnan, keskihinnan sekä kokonaismäärän.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.List; import java.util.IntSummaryStatistics; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3500, 1200, 4000, 2500); IntSummaryStatistics stats = prices.stream() .collect(Collectors.summarizingInt(Integer::intValue)); System.out.println("Minimum price: " + stats.getMin()); System.out.println("Maximum price: " + stats.getMax()); System.out.println("Average price: " + stats.getAverage()); System.out.println("Total number of items: " + stats.getCount()); System.out.println("Total sum: " + stats.getSum()); } }

Tässä koodissa luodaan tuotehintojen lista ja muunnetaan se numeeriseksi virraksi. Metodi Collectors.summarizingInt(Integer::intValue) kerää tilastotiedot ja tallentaa ne IntSummaryStatistics-olioon. Tämän jälkeen käytetään metodeja getMin(), getMax(), getAverage(), getCount() ja getSum() tarvittavien arvojen hakemiseen.

Lisämenetelmät

Metodi combine() yhdistää kaksi tilasto-oliota. Tämä on hyödyllistä, kun dataa käsitellään useassa säikeessä tai kun tilastoja yhdistetään eri lähteistä.

Metodi accept() lisää manuaalisesti arvoja tilasto-olioon, mikä on hyödyllistä, kun dataa päivitetään dynaamisesti.

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; import java.util.IntSummaryStatistics; public class Main { public static void main(String[] args) { IntSummaryStatistics stats1 = new IntSummaryStatistics(); stats1.accept(1500); stats1.accept(2500); IntSummaryStatistics stats2 = new IntSummaryStatistics(); stats2.accept(3500); stats2.accept(4500); stats1.combine(stats2); System.out.println("Minimum price: " + stats1.getMin()); System.out.println("Maximum price: " + stats1.getMax()); System.out.println("Average price: " + stats1.getAverage()); System.out.println("Total number of items: " + stats1.getCount()); System.out.println("Total sum: " + stats1.getSum()); } }

Tässä esimerkissä luodaan kaksi IntSummaryStatistics-oliota, joihin kumpaankin lisätään arvoja käyttämällä accept()-metodia. combine()-metodi yhdistää sitten molempien olioiden tilastotiedot, päivittäen kokonaismäärän (count), summan (sum) sekä pienimmän ja suurimman arvon (min/max values).

Tämän seurauksena stats1 sisältää nyt kaikkien lukujen yhdistetyt tilastotiedot, jotka tulostetaan konsoliin.

1. Mitä luokkaa käytetään int-arvojen tilastojen keräämiseen Stream API:ssa?

2. Mikä menetelmä lisää arvon IntSummaryStatistics-olioon?

3. Mikä menetelmä yhdistää kaksi IntSummaryStatistics-oliota?

question mark

Mitä luokkaa käytetään int-arvojen tilastojen keräämiseen Stream API:ssa?

Select the correct answer

question mark

Mikä menetelmä lisää arvon IntSummaryStatistics-olioon?

Select the correct answer

question mark

Mikä menetelmä yhdistää kaksi IntSummaryStatistics-oliota?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 9
some-alt