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

  • How To Cook That

    How To Cook

    16 NİSAN 2011
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013
  • TotalSeminarsChannel

    TotalSeminar

    16 Mart 2010