Właśnie zacząłem grać z lambdami Java 8 i próbuję zaimplementować niektóre rzeczy, do których jestem przyzwyczajony w językach funkcjonalnych.
Na przykład większość języków funkcjonalnych ma funkcję wyszukiwania, która działa na sekwencjach lub listach zwracających pierwszy element, dla którego jest predykat true
. Jedyny sposób, w jaki mogę to osiągnąć w Javie 8, to:
lst.stream()
.filter(x -> x > 5)
.findFirst()
Wydaje mi się to jednak nieefektywne, ponieważ filtr skanuje całą listę, przynajmniej według mojego zrozumienia (co może być błędne). Czy jest lepszy sposób?