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ä | Osio
Stream API Javassa

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 oman 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.

Jokaisella näistä numeerisista streameista on summaryStatistics()-metodi, joka palauttaa olion IntSummaryStatistics, LongSummaryStatistics tai DoubleSummaryStatistics vastaavasti. 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 luokkia 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 sinun täytyy analysoida tuotteiden hintoja määrittääksesi 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 streamiksi. Metodi Collectors.summarizingInt(Integer::intValue) kerää tilastotietoja 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-objektiin?

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

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

Select the correct answer

question mark

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

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 35

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Osio 1. Luku 35
some-alt