Guava gibi önceden Java 8 lambda-ağır kütüphanelerinde, çıkışlar bu yüzden kütüphane yöntemi keserse (örneğin tembel hala koşum bazı tembel hesaplama dış / iç API'lere hç ve kolaydır ortak Java Koleksiyon Çerçeve arayüzleri kullanın filter()
ve transform()
).
Ancak, Java 8 Akarsu, çağrı bir olsun Collection
/ Map
terminal (yani hevesli) ve aynı zamanda sonuçlarını tutmak için yeni veri yapılarını ayıracak.
Ortada çok aşamalı ve strateji paternli karmaşık hesaplamalar için, bu, ara sonuçlardan dolayı çok fazla gereksiz tahsise neden olur.
Yani, insanlar iç API'lerin (yani strateji desen stratejilerinin) alması ve geri dönmesi için iyi bir uygulama olduğunu düşünüyor mu yoksa Stream
tembel ama aerodinamik olmayan (sanırım pun) Guava API'larına geri dönmeli miyim?
Düzenle:
Benim asıl endişem Stream
, sadece bir kez tüketilebilmesi ve Supplier<Stream<X>>
son derece hantal bir görünüm gibi bir şey geçirebilmesidir . Neredeyse bir Collection
ve daha sonra stream()
onu geçmeye itiyor (ve bu noktada istekli değerlendirme maliyetini ödüyor).