Perché java.util.Collection non implementa la nuova interfaccia Stream?

Mi ci è voluto un po ‘di tempo per iniziare a guardare al ronzio di java-8 su torrenti e lambda. Quello che mi ha sorpreso è che non è ansible applicare le operazioni di Stream, come .map() , .filter() direttamente su un java.util.Collection . C’è una ragione tecnica per cui l’interfaccia java.util.Collection non è stata estesa con le implementazioni predefinite di queste operazioni di Stream?

Googling un po ‘, vedo molti esempi di persone che codificano secondo lo schema di:

 List list = someListExpression; List anotherList = list.stream().map(x -> f(x)).collect(Collectors.toList()); 

che diventa molto maldestro, se hai molte di queste operazioni di streaming nel tuo codice. Poiché .stream() e .collect() sono completamente irrilevanti per ciò che si desidera esprimere, si preferisce dire:

 List list = someListExpression; List anotherList = list.map(x -> f(x));