Ora che hai postato il codice intero, il problema è assolutamente chiaro.
Nel editDocenti fai diversi "giri" di copia (direi inutili) della lista. Alla fine fai:
docenti = new ArrayList<Docente>(clone_docenti);
return clone_docenti;
Restituisci clone_docenti, non docenti.
Questo clone_docenti è la lista "precedente". Quando nel main fai:
System.out.println(docenti.toString());// stampa
Questo
docenti NON è la lista su cui il removeIf opera!! Ma è la lista allo step precedente.
Quindi: risolvi i giri inutili di copia. Per quale motivo applicavi tutte quelle copie? Se l'obiettivo è quello di non esporre la lista "viva" ma solo una copia (è una possibilità lecita), si può fare ma
non in quel modo.
Bait ha scritto:
Ho bisogno di pratica per ragionare con le Lambda
E visto che vuoi fare pratica con le lambda, metti in Scuola un metodo es.
forEach (ispirato al forEach di Iterable) che riceve un
Consumer<? super Docente> in modo che nel main puoi stampare i docenti SENZA usare direttamente la lista.