marcop97 ha scritto:
Non stampa nulla finchè non metto una operazione terminale.
Ma allora devi comprendere meglio gli stream!!
Gli Stream sono "lazy", ovvero da soli non fanno nulla. Ci deve essere qualcuno che tira fuori gli elementi. Quando un metodo (es. il filter, map) restituisce un Stream (e lo restituisce
subito, non elabora alcun elemento in quel momento!), questo sostanzialmente è solo una specie di "ricetta" che descrive come applicare quel concetto (es. filtraggio degli elementi).
Ma alla fine ci
DEVE essere una operazione "terminale". Questa va materialmente a consumare gli elementi dell'ultimo Stream, che li prenderà (mappati, filtrati ecc..) dal precedente Stream che ecc...
Se non c'è una
terminal operation, la catena degli Stream di fatto non serve a nulla.
Quindi:
- se un metodo restituisce un Stream, è una
intermediate operation, "lazy"
- se un metodo restituisce altro non Stream, è una
terminal operation, che materialmente consuma gli elementi