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

  • 30GB

    30GB

    14 AĞUSTOS 2006
  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007