Lezione importante di preparazione all'esonero. L'esercizio
EssereVivente, con eccezioni, classi e metodi astratti, polimorfismo, ecc. Implementazione di interfacce (esercizio
Cercabile). Introduzione dell'interfaccia
Set e sua implementazione
HashSet. Importanza dell'implementazione di
equals e
hashCode (es.
Tupla2) in relazione al funzionamento di
List e
Set. Metodo
Objects.hash per calcolare l'hashCode degli oggetti di una classe. Classi interne e anonime, interfacce funzionali e lambda. Aggiungere la funzionalità di comparabilità durante l'implementazione di una classe (
Comparable<T>) e dopo aver chiuso il codice di una classe (l'interfaccia funzionale
Comparator<T>). Ordinamento mediante Comparator:
Collections.sort(lista, comparator) e
List.sort(comparator).
Esempi di espressioni lambda. Utilizzare le espressioni lambda per implementare un comparator e per implementare funzioni arbitrarie (es.
FunzioniSuInsieme).