Java 8 kelimesinin ilk öğe bul
Sadece Java 8 Lambda ile oynamaya başladım ve fonksiyonel dillerde alıştım bazı şeyleri uygulamaya çalışıyorum.
Örneğin, en işlevsel dil dizileri, yüklem true
ilk eleman, döndüren listeler üzerinde çalışan bul işlevi, bir tür var. Java 8'de bunu başarmak için tek yol vardır:
lst.stream()
.filter(x -> x > 5)
.findFirst()
Ancak bu filtre tüm listeyi, en azından benim anladığım kadarıyla yanlış olabilir) tarama bana yetersiz gibi görünüyor. Daha iyi bir yolu var mı?
CEVAP
Hayır, filtre tüm akışı taramaz. Tembel akışı (aslında tüm ara işlemleri tembel bir dere return) işlevi hangi Ara bir operasyon. Seni ikna etmek için, sadece Aşağıdaki test yapabilirsiniz:
List<Integer> list = Arrays.asList(1,10,3,7,5);
int a = list.stream().filter(x ->
{
System.out.println("filtered");
return x > 5;
}).findFirst().get();
System.out.println(a);
Çıkışları:
filtered
filtered
10
Akışın sadece ilk bir iki element aslında işlenmiş olduğunu görürsünüz.
Gayet iyi olan yaklaşımınız ile gidebilirsin.
Nasıl bir yöntem zaman'Java yürüt...
Java ile farklı sonuçlar's digest...
SSL el sıkışması uyarı: Java 1.7.0 içi...
Java arasındaki fark.açıklama.Rastgele...
/** ve Java Yorum /* ...