SORU
16 Mayıs 2014, Cuma


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
16 Mayıs 2014, Cuma


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • backyardjay

    backyardjay

    8 ŞUBAT 2009
  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • Videogamerz | Call of Duty

    Videogamerz

    5 NİSAN 2012