CodeGym
Promozione
Learning
Corsi
Tasks
Surveys & Quizzes
Games
Help
Schedule
Community
Users
Forum
Chat
Articles
Success stories
Activity
Reviews
Subscriptions
Tema chiaro

Lezioni

  • Recensioni
  • Chi siamo
Inizia
Inizia a imparare
Start learning now
  • I miei progressi
  • Corsi
  • Mappa Quest
  • Lezioni
  • Metodi groupingBy e partitioningBy (Collectors)

    JAVA 25 SELF
    Livello 31,Lezione 2
    In questa lezione impariamo a raggruppare i dati negli stream con i collector Collectors.groupingBy e Collectors.partitioningBy: raggruppamento semplice e annidato, suddivisione per criterio booleano, scelta tra i due, post-elaborazione del risultato e trucchi. Con esempi pratici su stringhe, numeri e oggetti vedrai come ottenere da uno stream ( Stream API) una Map della struttura desiderata e come lavorare con funzioni-criterio ( Function) e predicati ( Predicate). Alla fine — analisi degli errori tipici.
    Disponibile
  • Aggregazione avanzata: raggruppamenti annidati

    JAVA 25 SELF
    Livello 31,Lezione 3
    Immersione pratica nei raggruppamenti annidati con gli Stream e i collector: come combinare Collectors.groupingBy con gli aggregatori ( maxBy, averagingInt, counting), trasformare i dati con mapping, dividere in sottoinsiemi tramite partitioningBy e leggere correttamente le strutture Map annidate. Molti esempi illustrativi, visualizzazione della struttura dei risultati e analisi degli errori tipici.
    Disponibile
  • Collettori avanzati

    JAVA 25 SELF
    Livello 31,Lezione 4
    In questa lezione analizziamo tecniche avanzate con i collettori dello Stream API: collettori downstream annidati per groupingBy/ partitioningBy, trasformazioni con mapping, filtraggio con filtering, «appiattimento» con flatMapping, aggregazione simultanea con teeing (Java 12+), nonché il «congelamento» delle collezioni tramite toUnmodifiableList/Set/Map e collectingAndThen. Mostriamo pipeline pratiche ed errori tipici.
    Disponibile
  • I metodi flatMap e mapMulti

    JAVA 25 SELF
    Livello 32,Lezione 0
    In questa lezione analizzeremo le differenze tra la trasformazione dei dati con map, la trasformazione che «appiattisce» con flatMap e l’alternativa più efficiente introdotta da Java 16+ — mapMulti. Con esempi pratici vedremo chiaramente come scompattare collezioni annidate nel tipo Stream<String> invece di Stream<Stream<String>>, come lavorare con Optional tramite stream(), e quando scegliere mapMulti per ottenere migliori prestazioni senza creare flussi intermedi.
    Disponibile
  • Metodi join, concat: unione degli stream

    JAVA 25 SELF
    Livello 32,Lezione 1
    In questa lezione analizziamo i modi per unire i dati nello Stream API: il metodo statico Stream.concat per due stream, la combinazione Stream.of + flatMap per un numero arbitrario di stream, nonché il collector Collectors.joining per incollare gli elementi in un’unica stringa. Parleremo di lazy, natura monouso degli stream, mantenimento dell’ordine ed errori tipici (riutilizzo dello stream, stream infiniti, joining per non stringhe) — con esempi chiari.
    Disponibile
  • Operazioni di unione, intersezione e differenza

    JAVA 25 SELF
    Livello 32,Lezione 2
    In questa lezione analizziamo le operazioni tipiche sugli insiemi in Java: unione ( union), intersezione ( intersection) e differenza ( difference) basate sull’interfaccia Set e sulla Stream API. Sono mostrati esempi pratici con Stream.concat, Stream.of + flatMap, alternative tramite retainAll/ removeAll, nonché aspetti importanti relativi a equals/ hashCode, efficienza ed errori comuni.
    Disponibile
  • Zip (zip), generazione di stream (iterate, generate)

    JAVA 25 SELF
    Livello 32,Lezione 3
    In questa lezione vedremo che cos’è zip e perché non esiste nello Stream API standard (fino a Java 22), impareremo ad «accoppiare» le collezioni tramite indici con IntStream.range e a creare stream «al volo» con Stream.iterate e Stream.generate. Esempi, visualizzazioni ed errori tipici ti aiuteranno a usare con sicurezza generazione e zip nei compiti.
    Disponibile
  • Analisi degli errori tipici nell'uso degli stream

    JAVA 25 SELF
    Livello 32,Lezione 4
    Guida dettagliata agli errori più comuni nell'uso dello Stream API in Java: natura monouso dello stream e ripetizione di operazioni terminali ( collect(), forEach(), count()), modifica della collezione durante l'iterazione, limit() dimenticato con stream infiniti ( iterate, generate), gestione di null e lavoro con Optional tramite flatMap(Optional::stream), preservare l’ordine con forEachOrdered(), operazioni insiemistiche efficienti con Set, chiusura corretta delle risorse ( Files.lines + try-with-resources), cautela con parallelStream() e il principio «finché non c’è un operatore terminale, non viene eseguito nulla». Tutti i problemi sono accompagnati da esempi chiari e relative correzioni.
    Disponibile
  • Stream primitivi e costo del boxing

    JAVA 25 SELF
    Livello 33,Lezione 0
    In questa lezione vedremo perché gli stream standard di collezioni di numeri ( Stream<Integer>, Stream<Double>) possono essere inefficienti a causa del boxing/unboxing, e come gli stream primitivi — IntStream, LongStream, DoubleStream — aiutino a evitarlo. Analizzeremo le conversioni mapToInt/ boxed(), le operazioni di aggregazione ( sum(), average(), summaryStatistics()), i risultati sicuri con OptionalInt/ OptionalDouble, nonché dove l’ottimizzazione porta davvero benefici e come misurarne l’effetto con JMH.
    Disponibile
  • Elaborazione pigra (lazy evaluation) nelle Stream API

    JAVA 25 SELF
    Livello 33,Lezione 1
    In questa lezione vediamo come funziona l'elaborazione pigra nelle Stream API: in cosa differiscono le operazioni intermedie e terminali, perché i calcoli partono solo dopo la chiamata di un terminale, quali vantaggi offrono l'elaborazione elemento per elemento e la «valutazione a corto circuito». Mostreremo catene con filter, map, peek, findFirst, forEach, visualizzeremo il passaggio degli elementi e analizzeremo errori tipici e raccomandazioni per un ordine efficiente delle operazioni.
    Disponibile
  • Collezioni immutabili: Collections.unmodifiable

    JAVA 25 SELF
    Livello 33,Lezione 2
    In questa lezione analizziamo come proteggere i dati con i wrapper immutabili Collections.unmodifiableList, unmodifiableSet, unmodifiableMap, in cosa differiscono l’«immutabilità superficiale» da quella «profonda», quando e perché restituire wrapper dai metodi, nonché le alternative moderne List.of/ Set.of/ Map.of. Parleremo degli errori tipici (per esempio, aspettarsi l’immutabilità profonda o lavorare con null) e del perché i tentativi di modifica terminano con UnsupportedOperationException.
    Disponibile
  • Spliterator e stream paralleli

    JAVA 25 SELF
    Livello 33,Lezione 3
    In questa lezione analizziamo che cos’è Spliterator, come consente non solo di iterare gli elementi ma anche di suddividere la sorgente di dati in parti con trySplit(), e come su questa base funzionano gli stream paralleli tramite parallelStream() e il pool condiviso ForkJoinPool. Sono mostrati i metodi chiave ( tryAdvance, estimateSize, characteristics), le caratteristiche tipiche ( ORDERED, SIZED, CONCURRENT e altre), esempi pratici, uno schema Mermaid e gli errori frequenti nell’uso degli stream paralleli.
    Disponibile
  • 1
  • ...
  • 14
  • 15
  • 16
  • 17
  • 18
  • ...
  • 30
Learn
  • Registration
  • Java Course
  • Help with Tasks
  • Pricing
  • Game Projects
  • Java Syntax
Community
  • Users
  • Articles
  • Forum
  • Chat
  • Success Stories
  • Activity
  • Affiliate Program
Company
  • About us
  • Contacts
  • Reviews
  • Press Room
  • CodeGym for EDU
  • FAQ
  • Support
CodeGymCodeGym is an online course for learning Java programming from scratch. This course is a perfect way to master Java for beginners. It contains 1200+ tasks with instant verification and an essential scope of Java fundamentals theory. To help you succeed in education, we’ve implemented a set of motivational features: quizzes, coding projects, content about efficient learning, and a Java developer’s career.
Follow us
Lingua dell'interfaccia
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
"Programmers Are Made, Not Born" © 2026 CodeGym
MastercardVisa
"Programmers Are Made, Not Born" © 2026 CodeGym