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
  • I contratti di equals e hashCode

    JAVA 25 SELF
    Livello 29,Lezione 0
    In questa lezione analizzeremo come definire correttamente l’uguaglianza degli oggetti in Java: in cosa differisce il confronto dei riferimenti con l’operatore == rispetto al confronto del contenuto con il metodo equals, perché il contratto equals/ hashCode è cruciale per collezioni come HashSet e HashMap, e come metterlo in relazione con compareTo di Comparable. Esempi passo-passo, best practice e analisi degli errori tipici aiutano a evitare trappole nell’uso di tabelle hash e collezioni ordinabili.
    Disponibile
  • Classe Objects: metodi equals, hashCode, hash

    JAVA 25 SELF
    Livello 29,Lezione 1
    In questa lezione analizziamo il «coltellino svizzero» java.util.Objects: come confrontare in modo sicuro con Objects.equals, calcolare in modo conciso gli hash con Objects.hash, delegare il confronto tramite Objects.compare, garantire valori non- null con Objects.requireNonNull, nonché usare Objects.isNull/ Objects.nonNull negli stream. Mostreremo un'implementazione corretta di equals/ hashCode/ compareTo, analizzeremo casi pratici ed errori tipici quando si lavora con HashMap/ HashSet.
    Disponibile
  • Interfaccia Comparable: implementazione, compareTo

    JAVA 25 SELF
    Livello 29,Lezione 2
    In questa lezione analizziamo l’ordinamento naturale degli oggetti in Java tramite l’interfaccia Comparable e il metodo compareTo: a cosa serve, come implementarlo correttamente, come funziona l’ordinamento delle collezioni ( Collections.sort e List.sort), il confronto su più campi, la gestione dei valori null e la coerenza con equals/ hashCode. Vedremo le best practice, gli errori più comuni ed esempi pratici con la classe Person.
    Disponibile
  • Interfaccia Comparator: creazione, utilizzo

    JAVA 25 SELF
    Livello 29,Lezione 3
    In questa lezione analizziamo quando usare Comparator invece di Comparable, la sintassi e il contratto del metodo compare(T o1, T o2), la pratica dell’ordinamento delle liste tramite Collections.sort e List.sort, la creazione di comparator sia come classi separate sia tramite classi anonime ed espressioni lambda. Considereremo l’ordinamento multilivello, la gestione dei valori null, la ricerca con Collections.binarySearch, l’inversione dell’ordine con reversed(), nonché best practice ed errori tipici (ad esempio, perché è meglio usare Integer.compare e non a - b).
    Disponibile
  • Ricerca e ordinamento di elementi nelle collezioni Java

    JAVA 25 SELF
    Livello 29,Lezione 4
    In questa lezione analizzeremo tecniche pratiche per lavorare con le collezioni: ricerca degli elementi con i metodi contains, indexOf, lastIndexOf, ricerca condizionale tramite un ciclo for e l'istruzione break, individuazione di minimo e massimo con la classe Collections. Faremo pratica nell'ordinare le liste con Collections.sort e List.sort, nell'usare Comparator, nell'ordinare le coppie di Map e anche oggetti in base a un campo. Infine discuteremo gli errori tipici: liste immutabili create con List.of, tentativi di ordinare Set/ Map e comparator errati.
    Disponibile
  • Introduzione allo Stream API: a cosa servono i flussi

    JAVA 25 SELF
    Livello 30,Lezione 0
    In questa lezione vediamo perché l’approccio imperativo al trattamento delle collezioni accumula rapidamente boilerplate e come lo Stream API porti il codice in uno stile dichiarativo: catene di operazioni filter, map, collect, composizione semplice, meno errori e parallelismo semplice tramite parallelStream(). Mostreremo gli ambiti di applicazione, la storia dell’introduzione e gli errori tipici da evitare.
    Disponibile
  • Operazioni di base della Stream API: map, filter, collect

    JAVA 25 SELF
    Livello 30,Lezione 1
    Guida passo passo alle operazioni di base della Stream API: come ottenere uno stream da una collezione e da un array ( stream(), Arrays.stream, Stream.of), in cosa differiscono le operazioni intermedie ( filter, map, distinct) da quelle terminali ( collect, forEach, count) e come raccogliere i risultati con Collectors ( toList, toSet, joining). Esempi pratici, mini-esercizi e una sezione con errori tipici ti aiuteranno a padroneggiare rapidamente l’elaborazione dei dati in pipeline.
    Disponibile
  • Sottoinsiemi dell'API Stream: distinct, limit, skip

    JAVA 25 SELF
    Livello 30,Lezione 2
    In questa lezione analizziamo tre operazioni chiave di Stream API per lavorare con i sottoinsiemi di dati: distinct (rimozione dei duplicati), limit (limitazione del numero di elementi) e skip (salto dei primi elementi). Vedrai come funzionano su collezioni di stringhe e oggetti, come l’implementazione di equals/ hashCode influisce sul risultato di distinct, come combinare le operazioni per la paginazione e la selezione dei top‑N e quali errori si incontrano più spesso.
    Disponibile
  • Metodi forEach, peek: effetti collaterali

    JAVA 25 SELF
    Livello 30,Lezione 3
    In questa lezione analizziamo le operazioni degli stream per gli effetti collaterali: l’operazione terminale forEach e quella intermedia peek. Capiremo quando e perché usarle, in cosa differiscono, perché dopo forEach lo stream «si chiude», mentre peek non modifica i dati ed è eseguita solo in presenza di un’operazione terminale. Mostreremo esempi pratici, chiariremo aspetti non ovvi ed errori tipici (inclusi ConcurrentModificationException e la sostituzione errata di collect con forEach).
    Disponibile
  • Trasformazione delle collezioni tramite Stream

    JAVA 25 SELF
    Livello 30,Lezione 4
    Guida pratica alla trasformazione delle collezioni con Stream API: conversione List ↔ Set, costruzione di mappe con Collectors.toMap() (inclusa la gestione dei duplicati), concatenazione in una stringa con Collectors.joining(), analisi delle operazioni terminali e intermedie ( forEach, collect, count, anyMatch ecc.). All'interno — esempi chiari, spiegazioni ed errori tipici.
    Disponibile
  • Metodi sum, count, average, max, min nell’API Stream

    JAVA 25 SELF
    Livello 31,Lezione 0
    In questa lezione analizziamo le operazioni di aggregazione dell’API Stream: come contare gli elementi con count(), calcolare somme e medie con gli stream primitivi ( IntStream, LongStream, DoubleStream) e con i metodi sum(), average(), nonché trovare gli estremi con min()/ max(). Inoltre parleremo dei contenitori Optional, OptionalInt, OptionalLong, OptionalDouble e dei modi corretti di estrarre i valori: orElse(...), ifPresent(...), orElseThrow(). Impareremo a usare i collector Collectors.summingInt, Collectors.averagingInt, Collectors.maxBy/ minBy e a combinarli con groupingBy. Infine — analisi degli errori tipici e delle particolarità.
    Disponibile
  • Metodi reduce e collect: aggregazione dei dati

    JAVA 25 SELF
    Livello 31,Lezione 1
    Analizziamo le operazioni terminali degli stream: la riduzione universale reduce() e il potente raccoglitore collect(). Capiremo le firme con identity, accumulator e combiner, impareremo a raccogliere dati con i collector pronti di Collectors ( toList(), toMap(), joining(), groupingBy()) e vedremo dove conviene preferire collect() a reduce(). A parte, discuteremo l’uso di Optional, la gestione dei duplicati in toMap() e le sfumature degli stream paralleli.
    Disponibile
  • 1
  • ...
  • 13
  • 14
  • 15
  • 16
  • 17
  • ...
  • 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