0Pricing
Java Academy · Lekcja

Operacje na zakresach i agregowanie

range, sum, average, summaryStatistics

Operacje na zakresach i agregowanie to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.

Generowanie zakresów

IntStream.range(start, end) generuje kolejne liczby całkowite od start do wartości poprzedzającej end, czyli end nie jest uwzględniane.

import java.util.stream.IntStream;

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

rangeClosed uwzględnia koniec

IntStream.rangeClosed(start, end) uwzględnia końcową wartość, więc rangeClosed(1, 5) zwraca wartości od 1 do 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);
    }
}

Zastępowanie pętli indeksowanych

Zakresy są przejrzystym zamiennikiem indeksowanych pętli for podczas iterowania po pozycjach tablicy.

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 dodaje wszystkie elementy i zwraca wynik prymitywny.

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 zwraca OptionalDouble, ponieważ strumień może być pusty.

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 i max

min i max zwracają OptionalInt. Należy użyć getAsInt, gdy wiadomo, że strumień nie jest pusty.

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 zwraca liczbę elementów jako wartość typu long.

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 oblicza liczbę elementów, sumę, minimum, średnią i maksimum w jednym przebiegu, zwracając obiekt IntSummaryStatistics.

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

Odczytywanie poszczególnych statystyk

Obiekt podsumowania udostępnia metody getCount, getSum, getMin, getMax i getAverage.

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

Łączenie zakresu i agregacji

Zakresy i agregacje naturalnie się łączą: należy wygenerować dane, przekształcić je, a następnie zredukować do jednej liczby.

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

Agregacje LongStream

LongStream oferuje te same metody zakresów i agregacji, zwracając obiekt LongSummaryStatistics.

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

Szybkie sprawdzenie

Czym różnią się range i rangeClosed?

Podsumowanie

Generowano i podsumowywano prymitywne zakresy:

  • range nie uwzględnia końca, a rangeClosed go uwzględnia.
  • Agregacje: sum, average (OptionalDouble), min/max (OptionalInt) oraz count.
  • summaryStatistics oblicza je wszystkie w jednym przebiegu.

Często zadawane pytania

Czy lekcja „Operacje na zakresach i agregowanie” jest bezpłatna?

Tak — pełny tekst „Operacje na zakresach i agregowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Operacje na zakresach i agregowanie”?

range, sum, average, summaryStatistics Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Java Academy?

Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Operacje na zakresach i agregowanie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?

Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. IntStream i LongStream
  2. Operacje na zakresach i agregowanie
  3. Mapowanie do strumieni obiektów i z nich
  4. Generowanie strumieni typów prostych
← Powrót do Java Academy