Java Academy · Oppitunti

Väli- ja koontioperaatiot

range, sum, average, summaryStatistics.

Oppitunti 2/413 vaihetta

Väli- ja koontioperaatiot on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.

Alueiden luominen

IntStream.range(start, end) tuottaa peräkkäiset kokonaisluvut arvosta start aina arvoon end asti, mutta end ei sisälly tulokseen.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntStream.range(0, 5).forEach(System.out::println);
    }
}

rangeClosed sisältää lopun

IntStream.rangeClosed(start, end) sisältää viimeisen arvon, joten rangeClosed(1, 5) tuottaa luvut 1–5.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int sum = IntStream.rangeClosed(1, 5).sum();
        System.out.println(sum);
    }
}

Indeksisilmukoiden korvaaminen

Alueet ovat selkeä korvaaja indeksipohjaisille for-silmukoille, kun taulukon sijainteja käydään läpi.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        String[] names = {"a", "b", "c"};
        IntStream.range(0, names.length)
            .forEach(i -> System.out.println(i + ": " + names[i]));
    }
}

sum

sum laskee yhteen kaikki alkiot ja palauttaa primitiivisen tuloksen.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int total = IntStream.rangeClosed(1, 100).sum();
        System.out.println(total);
    }
}

average

average palauttaa OptionalDouble-arvon, koska virta voi olla tyhjä.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        double avg = IntStream.of(2, 4, 6, 8).average().getAsDouble();
        System.out.println(avg);
    }
}

min ja max

min ja max palauttavat OptionalInt-arvon. Käyttäkää getAsInt-metodia, kun tiedätte, ettei virta ole tyhjä.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int hi = IntStream.of(3, 9, 1, 7).max().getAsInt();
        int lo = IntStream.of(3, 9, 1, 7).min().getAsInt();
        System.out.println(lo + " .. " + hi);
    }
}

count

count palauttaa alkioiden määrän long-arvona.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        long n = IntStream.rangeClosed(1, 50).filter(x -> x % 3 == 0).count();
        System.out.println(n);
    }
}

summaryStatistics

summaryStatistics laskee määrän, summan, pienimmän ja suurimman arvon sekä keskiarvon yhdellä läpikäynnillä ja palauttaa IntSummaryStatistics-olion.

import java.util.IntSummaryStatistics;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntSummaryStatistics stats = IntStream.of(5, 10, 15, 20).summaryStatistics();
        System.out.println(stats);
    }
}

Yksittäisten tilastotietojen lukeminen

Yhteenveto-olio tarjoaa getCount-, getSum-, getMin-, getMax- ja getAverage-metodit.

import java.util.IntSummaryStatistics;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntSummaryStatistics s = IntStream.rangeClosed(1, 10).summaryStatistics();
        System.out.println("count=" + s.getCount());
        System.out.println("avg=" + s.getAverage());
        System.out.println("max=" + s.getMax());
    }
}

Alueen ja aggregoinnin yhdistäminen

Alueet ja aggregoinnit toimivat luontevasti yhdessä: luokaa virta, muuntakaa sitä ja pelkistäkää se yhdeksi luvuksi.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int sumOfSquares = IntStream.rangeClosed(1, 4)
            .map(n -> n * n)
            .sum();
        System.out.println(sumOfSquares);
    }
}

LongStream-aggregoinnit

LongStream tarjoaa samat alue- ja aggregointimetodit ja palauttaa LongSummaryStatistics-olion.

import java.util.stream.LongStream;

public class Main {
    public static void main(String[] args) {
        long sum = LongStream.rangeClosed(1, 1000).sum();
        System.out.println(sum);
    }
}

Pikatarkistus

Miten range ja rangeClosed eroavat toisistaan?

Kertaus

Loitte ja tiivistitte primitiivisiä alueita:

  • range ei sisällytä loppuarvoa, kun taas rangeClosed sisältää sen.
  • Aggregoinnit: sum, average (OptionalDouble), min/max (OptionalInt) ja count.
  • summaryStatistics laskee ne kaikki yhdellä läpikäynnillä.
Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Väli- ja koontioperaatiot” ilmainen?

Kyllä – oppitunnin ”Väli- ja koontioperaatiot” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Väli- ja koontioperaatiot”?

range, sum, average, summaryStatistics. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Väli- ja koontioperaatiot”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?

Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. IntStream ja LongStream
  2. Väli- ja koontioperaatiot
  3. Kuvaus olio- ja primitiivivirtojen välillä
  4. Primitiivivirtojen luonti
← Takaisin: Java Academy