CodeGym
Promocja
Nauka
Kursy
Zadania
Ankiety & quizy
Gry
Pomoc
Harmonogram
Społeczność
Użytkownicy
Forum
Czat
Artykuły
Historie sukcesu
Aktywność
Opinie
Subskrypcje
Jasny motyw

Lekcje

  • Opinie
  • O nas
Start
Rozpocznij naukę
Rozpocznij naukę teraz
  • Mój postęp
  • Kursy
  • Mapa Questów
  • Lekcje
  • Metody groupingBy i partitioningBy (Collectors)

    JAVA 25 SELF
    Poziom 31,Lekcja 2
    W tej lekcji uczymy się grupować dane w strumieniach za pomocą kolektorów Collectors.groupingBy i Collectors.partitioningBy: proste i zagnieżdżone grupowanie, podział według wartości logicznej, wybór między nimi, obróbka wyniku oraz wskazówki. Na praktycznych przykładach z łańcuchami, liczbami i obiektami zobaczysz, jak ze strumienia ( Stream API) otrzymać Map o potrzebnej strukturze i jak pracować z funkcjami wyznaczającymi klucz ( Function) oraz predykatami ( Predicate). Na końcu — omówienie typowych błędów.
    Dostępne
  • Zaawansowana agregacja: zagnieżdżone grupowania

    JAVA 25 SELF
    Poziom 31,Lekcja 3
    Praktyczne zanurzenie w zagnieżdżone grupowania z Streamami i kolektorami: jak łączyć Collectors.groupingBy z agregatorami ( maxBy, averagingInt, counting), przekształcać dane za pomocą mapping, dzielić na podzbiory przez partitioningBy i poprawnie czytać zagnieżdżone struktury Map. Wiele czytelnych przykładów, wizualizacja struktury wyników i omówienie typowych błędów.
    Dostępne
  • Zaawansowane kolektory

    JAVA 25 SELF
    Poziom 31,Lekcja 4
    W wykładzie omawiamy zaawansowane techniki z kolektorami Stream API: zagnieżdżone kolektory downstream dla groupingBy/ partitioningBy, przekształcenia z mapping, filtrowanie z filtering, „spłaszczanie” z flatMapping, jednoczesną agregację z teeing (Java 12+), a także „zamrożenie” kolekcji przez toUnmodifiableList/Set/Map i collectingAndThen. Pokazujemy praktyczne potoki i typowe błędy.
    Dostępne
  • Metody flatMap i mapMulti

    JAVA 25 SELF
    Poziom 32,Lekcja 0
    W tej lekcji omówimy, czym różni się przekształcanie danych przez map, „spłaszczające” przekształcenie przez flatMap i bardziej wydajny odpowiednik z Java 16+ — mapMulti. Na praktycznych przykładach zobaczymy, jak rozpakowywać zagnieżdżone kolekcje do postaci Stream<String> zamiast Stream<Stream<String>>, jak pracować z Optional przez stream(), a także kiedy wybrać mapMulti ze względu na wydajność bez tworzenia pośrednich strumieni.
    Dostępne
  • Metody join, concat: łączenie strumieni

    JAVA 25 SELF
    Poziom 32,Lekcja 1
    W tej lekcji omawiamy sposoby łączenia danych w Stream API: statyczną metodę Stream.concat dla dwóch strumieni, kombinację Stream.of + flatMap dla dowolnej liczby strumieni, a także kolektor Collectors.joining do sklejenia elementów w jeden ciąg. Porozmawiamy o leniwości, jednorazowości strumieni, zachowaniu kolejności i typowych błędach (ponowne użycie strumienia, strumienie nieskończone, joining dla nie-Stringów) — z czytelnymi przykładami.
    Dostępne
  • Operacje union, intersection, difference

    JAVA 25 SELF
    Poziom 32,Lekcja 2
    W tym wykładzie omawiamy typowe operacje na zbiorach w Javie: suma ( union), część wspólna ( intersection) i różnica ( difference) na bazie interfejsu Set i Stream API. Pokazujemy praktyczne przykłady z Stream.concat, Stream.of + flatMap, alternatywy przez retainAll/ removeAll, a także ważne niuanse dotyczące equals/ hashCode, wydajności i typowych błędów.
    Dostępne
  • Zipowanie (zip), generowanie strumieni (iterate, generate)

    JAVA 25 SELF
    Poziom 32,Lekcja 3
    W tej lekcji omówimy, czym jest zip i dlaczego nie ma go w standardowym Stream API (do Java 22), nauczymy się „zszywać” kolekcje po indeksach za pomocą IntStream.range, a także tworzyć strumienie „w locie” za pomocą Stream.iterate i Stream.generate. Przykłady, wizualizacje i typowe błędy pomogą pewnie stosować generowanie i zipowanie w zadaniach.
    Dostępne
  • Analiza typowych błędów podczas pracy ze strumieniami

    JAVA 25 SELF
    Poziom 32,Lekcja 4
    Szczegółowy przewodnik po częstych błędach podczas pracy z Stream API w Javie: jednorazowa natura strumienia i powtarzane operacje terminalne ( collect(), forEach(), count()), modyfikowanie kolekcji podczas iteracji, zapomniany limit() przy strumieniach nieskończonych ( iterate, generate), obsługa null oraz praca z Optional poprzez flatMap(Optional::stream), zachowanie kolejności dzięki forEachOrdered(), wydajne operacje na zbiorach z Set, prawidłowe zamykanie zasobów ( Files.lines + try-with-resources), ostrożność z parallelStream() oraz zasada: „dopóki nie ma operatora terminalnego — nic się nie wykonuje”. Wszystkie problemy są zilustrowane czytelnymi przykładami i poprawkami.
    Dostępne
  • Strumienie prymitywne i koszt opakowywania (boxing)

    JAVA 25 SELF
    Poziom 33,Lekcja 0
    W wykładzie wyjaśnimy, dlaczego zwykłe strumienie kolekcji liczb ( Stream<Integer>, Stream<Double>) mogą być niewydajne z powodu opakowywania/rozpakowywania (boxing/unboxing) i jak strumienie prymitywne — IntStream, LongStream, DoubleStream — pomagają tego uniknąć. Omówimy konwersje mapToInt/ boxed(), operacje agregujące ( sum(), average(), summaryStatistics()), bezpieczne wyniki z OptionalInt/ OptionalDouble, a także gdzie optymalizacja faktycznie daje przyrost i jak mierzyć efekt za pomocą JMH.
    Dostępne
  • Leniwe przetwarzanie (lazy evaluation) w Stream API

    JAVA 25 SELF
    Poziom 33,Lekcja 1
    W lekcji omawiamy, jak działa leniwe przetwarzanie w Stream API: czym różnią się operacje pośrednie i terminalne, dlaczego obliczenia startują dopiero po wywołaniu operacji terminalnej, jakie korzyści dają poelementowe przetwarzanie i „krótkie obliczenia”. Pokażemy łańcuchy z filter, map, peek, findFirst, forEach, zwizualizujemy przejście elementów i omówimy typowe błędy oraz zalecenia dotyczące efektywnej kolejności operacji.
    Dostępne
  • Kolekcje niemodyfikowalne: Collections.unmodifiable

    JAVA 25 SELF
    Poziom 33,Lekcja 2
    W tym wykładzie omawiamy, jak chronić dane za pomocą niemodyfikowalnych wrapperów Collections.unmodifiableList, unmodifiableSet, unmodifiableMap, czym różni się „płytka” niemodyfikowalność od „głębokiej”, kiedy i po co zwracać wrappery z metod, a także współczesne alternatywy List.of/ Set.of/ Map.of. Porozmawiamy o typowych błędach (np. oczekiwanie głębokiej niemodyfikowalności lub praca z null) oraz o tym, dlaczego próby modyfikacji kończą się UnsupportedOperationException.
    Dostępne
  • Spliterator i strumienie równoległe

    JAVA 25 SELF
    Poziom 33,Lekcja 3
    W lekcji omawiamy, czym jest Spliterator, jak pozwala nie tylko iterować po elementach, lecz także dzielić źródło danych na części za pomocą trySplit(), jak na tej bazie działają strumienie równoległe przez parallelStream() i wspólną pulę ForkJoinPool. Pokazano kluczowe metody ( tryAdvance, estimateSize, characteristics), typowe charakterystyki ( ORDERED, SIZED, CONCURRENT itd.), praktyczne przykłady, schemat Mermaid oraz częste błędy przy używaniu strumieni równoległych.
    Dostępne
  • 1
  • ...
  • 14
  • 15
  • 16
  • 17
  • 18
  • ...
  • 30
Nauka
  • Rejestracja
  • Kurs Java
  • Pomoc w zadaniach
  • Cennik
  • Składnia Javy
Społeczność
  • Użytkownicy
  • Artykuły
  • Forum
  • Czat
  • Historie sukcesu
  • Aktywność
  • Program partnerski
Firma
  • O nas
  • Kontakt
  • Opinie
  • Dla mediów
  • CodeGym dla EDU
  • FAQ
  • Wsparcie
CodeGymCodeGym to kurs online do nauki programowania w Javie od podstaw. Kurs idealny do opanowania Javy dla początkujących. Zawiera 1200+ zadań z natychmiastową weryfikacją oraz niezbędny zakres teorii podstaw Javy. Aby pomóc Ci w nauce, wprowadziliśmy zestaw funkcji motywacyjnych: quizy, projekty programistyczne, materiały o efektywnej nauce i poradnik kariery dla programisty Java.
Obserwuj nas
Język interfejsu
English Deutsch Español हिन्दी Français Português
Polski
বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programiści są tworzeni, nie rodzą się" © 2026 CodeGym
MastercardVisa
"Programiści są tworzeni, nie rodzą się" © 2026 CodeGym