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
  • Uso delle lambda nelle collezioni e negli stream

    JAVA 25 SELF
    Livello 48,Lezione 1
    Pratica delle espressioni lambda nelle collezioni e Stream API: come sostituire le classi anonime con lambda compatte, usare i metodi delle collezioni ( forEach, removeIf, sort, replaceAll) e costruire pipeline di elaborazione dei dati ( stream → filter → map → sorted → collect). Confronteremo con le classi anonime, discuteremo delle variabili «effettivamente final», forniremo una tabella delle operazioni principali e analizzeremo gli errori tipici.
    Disponibile
  • Vantaggi e svantaggi delle espressioni lambda

    JAVA 25 SELF
    Livello 48,Lezione 2
    In questa lezione analizziamo perché Java ha introdotto le espressioni lambda: sinteticità e leggibilità, passaggio del comportamento come parametro, integrazione con le collezioni e con lo Stream API ( filter, map, forEach), cattura di variabili «effettivamente» final e comoda scrittura dei callback tramite l’operatore ->. In parallelo vedremo anche le insidie: debug di catene lunghe, ambiguità nelle overload ( Runnable vs Callable), limitazioni delle closure, serializzazione e lambda annidate. Infine — raccomandazioni pratiche su quando usare le lambda e analisi degli errori tipici.
    Disponibile
  • Closure (closures) in Java: caratteristiche

    JAVA 25 SELF
    Livello 48,Lezione 3
    In questa lezione analizziamo che cos’è una closure e come funziona in Java: come le lambda e le classi anonime «catturano» le variabili esterne, perché le variabili locali devono essere final o effettivamente final, in cosa la cattura delle variabili locali differisce dall’accesso ai campi della classe, e come si comporta this nelle lambda e nelle classi anonime. Mostreremo factory di funzioni con IntSupplier, esamineremo l’implementazione interna della cattura e gli errori tipici (ad esempio, il messaggio del compilatore Variable used in lambda expression should be final or effectively final).
    Disponibile
  • Classi anonime: differenze rispetto alle lambda, esempi

    JAVA 25 SELF
    Livello 48,Lezione 4
    In questa lezione analizziamo che cos’è una classe anonima in Java e in cosa si differenzia da un’espressione lambda: sintassi, possibilità (campi, metodi aggiuntivi, override di toString/ equals), ambito e comportamento di this, cattura delle variabili (solo final/«effettivamente final»). Sono mostrati esempi pratici con Runnable, Comparator, Predicate, oltre a raccomandazioni — quando scegliere una lambda e quando una classe anonima.
    Disponibile
  • Interfacce funzionali: Predicate, Consumer, Supplier, Function

    JAVA 25 SELF
    Livello 49,Lezione 0
    Analizziamo le principali interfacce funzionali del package java.util.function: Predicate, Consumer, Supplier, Function — cosa accettano/restituiscono e dove vengono usate nello Stream API ( filter, map, forEach, generate). Ricordiamo la regola «esattamente un metodo astratto» e l’annotazione @FunctionalInterface, scriviamo lambda, confrontiamo con le classi anonime, facciamo pratica con la classe User e analizziamo gli errori tipici nella scelta tra Predicate/ Function ecc.
    Disponibile
  • Composizione di funzioni: compose, andThen

    JAVA 25 SELF
    Livello 49,Lezione 1
    Questa lezione — su come costruire pipeline di trasformazioni a partire da piccole funzioni usando Function e i suoi metodi compose e andThen. Vedremo l’ordine di applicazione, la compatibilità dei tipi, esempi con Predicate ( and, or, negate), Consumer ( andThen), costruiremo pipeline pratiche e discuteremo gli errori tipici: ordine invertito ( f.compose(g) vs f.andThen(g)), tipi non coerenti e «spaghetti» di catene. Imparerai a usare apply, test, accept e a costruire trasformazioni leggibili e riutilizzabili.
    Disponibile
  • Passare funzioni come parametri: esempi

    JAVA 25 SELF
    Livello 49,Lezione 2
    Introduzione pratica al passaggio del comportamento in Java: come usare le espressioni lambda ( ->) e i riferimenti a metodi ( ::) insieme allo Stream API e alle collezioni. Esamineremo le interfacce funzionali standard da java.util.function — Comparator, Predicate, Function, Consumer, Supplier — impareremo a scrivere metodi generici, ad accettare il comportamento come parametro e a evitare gli errori tipici. Faremo pratica con esempi con Stream, Optional e utility proprie per l’elaborazione di liste.
    Disponibile
  • Stile funzionale con Stream API

    JAVA 25 SELF
    Livello 49,Lezione 3
    Passiamo dai cicli imperativi alle pipeline dichiarative di elaborazione dei dati con Stream API: analizziamo operazioni intermedie e terminali, la valutazione lazy, la raccolta dei risultati tramite toList()/ collect, le operazioni chiave map, filter, sorted, flatMap, reduce, nonché i controlli anyMatch/ allMatch/ noneMatch. Confronteremo stile imperativo e funzionale, vedremo esempi pratici ed errori tipici, incluso l’uso fuori luogo di forEach per raccogliere collezioni e l’adozione prematura di parallelStream().
    Disponibile
  • Analisi degli errori nella programmazione funzionale

    JAVA 25 SELF
    Livello 49,Lezione 4
    I 10 errori più comuni quando si lavora con le lambda e lo Stream API in Java: cattura delle variabili ( final/ effectively final), comportamento di this nelle lambda, effetti collaterali e parallelismo ( parallelStream()), inferenza dei tipi e generics, gestione di null e Optional, composizione di funzioni ( compose/ andThen) e anche eccezioni checked (per esempio, IOException). Mostriamo pratiche sicure: filtraggio con Objects::nonNull, operazioni terminali ( sum(), collect(...)), collezioni thread-safe e decomposizione di catene lunghe.
    Disponibile
  • Ascoltatori (Listeners) e interfacce degli eventi

    JAVA 25 SELF
    Livello 50,Lezione 0
    Come è organizzato in Java il modello a eventi: la sorgente genera un evento e i listener sottoscritti ricevono una notifica e reagiscono. Analizzeremo le interfacce chiave dei listener di Swing — ActionListener, MouseListener, KeyListener, ChangeListener, DocumentListener — e mostreremo come registrare i gestori tramite addActionListener e implementare il metodo actionPerformed. Faremo pratica nel collegare i listener a JButton/ JFrame, confronteremo le classi anonime e le espressioni lambda, discuteremo errori tipici e consigli pratici.
    Disponibile
  • Eventi in Swing e AWT: basi, esempi

    JAVA 25 SELF
    Livello 50,Lezione 1
    Breve introduzione pratica al modello di eventi di AWT/ Swing: creiamo un pulsante JButton, registriamo un listener tramite addActionListener, gestiamo in actionPerformed. Analizziamo classi anonime ed espressioni lambda, i listener più comuni ( MouseListener/ MouseAdapter, KeyAdapter, DocumentListener), scriviamo una mini‑app basata su JFrame, JButton, JLabel, osserviamo la sequenza delle chiamate e gli errori tipici (lavoro pesante nel gestore, variabili final nelle lambda, addActionListener dimenticato, rimozione dei listener, uso di SwingWorker).
    Disponibile
  • Creazione e gestione di eventi personalizzati

    JAVA 25 SELF
    Livello 50,Lezione 2
    In questa lezione analizziamo come progettare eventi personalizzati in Java: creiamo una classe evento basata su java.util.EventObject, definiamo un'interfaccia di listener tramite java.util.EventListener, aggiungiamo un meccanismo di registrazione/rimozione ( add...Listener/ remove...Listener) e di notifica ( fire...). Vedremo la pratica con gli esempi di DataLoader e di un contatore, discuteremo i gestori con classi anonime ed espressioni lambda, e analizzeremo anche gli errori tipici (eccezioni nei listener, perdite di memoria, ConcurrentModificationException).
    Disponibile
  • 1
  • ...
  • 21
  • 22
  • 23
  • 24
  • 25
  • ...
  • 30
Learn
  • Registration
  • Java Course
  • Help with Tasks
  • Pricing
  • 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