So come funziona l'espressione lambda e so che è un argomento per .filter() che stabilisce i criteri per filtrare con. Ma non capisco come .filter() usi l'argomento, in questo caso un'espressione lambda, perché .filter () non ha un'implementazione o almeno ne richiede uno in fase di compilazione. Cerco questa implementazione sconosciuta nel sito di Oracle ma ci sono solo poche parole che spiegano come funziona e nessun codice.
Questa implementazione è nascosta o viene creata automaticamente dal compilatore java?
Un'operazione di aggregazione ne ha bisogno?
double average = roster
.stream()
.filter(p -> p.getGender() == Person.Sex.MALE)
.mapToInt(Person::getAge)
.average()
.getAsDouble();
roster è un'istanza List<Person> di ArrayList<Person>
Person è una semplice classe che rappresenta una persona