2016-04-09 20 views
5

Seçenek 1 ya da seçenek 2'nin altında ya doğru (örneğin, diğeri üzerinde tercih edilen) var mı yoksa eşdeğer mi?Java 8 Akımları Filtresinin Lazy Değerlendirmesinin Amacı

Seçenek 2

collectionOfThings 
    .stream() 
    .filter(thing -> thing.condition1()) 
    .filter(thing -> thing.condition2()) 
+0

Önceki sorunun yanıtı yanlış. Ben bir kıyaslama uzmanı değilim, ancak kendi testlerim Option1'in daha iyi performans gösterebileceğini gösteriyor. Test kodumu diğer soruya göndereceğim ve herkesin bulgularımı gözden geçirmesini takdir ediyorum. –

cevap

8

derlemek için 1

collectionOfThings. 
    stream(). 
    filter(thing -> thing.condition1() && thing.condition2()) 

veya

İsteğe bağlı ikinci bir olmalıdır

collectionOfThings. 
    stream(). 
    filter(thing -> thing.condition1()). 
    filter(thing -> thing.condition2()) 

Her ikisi de eşdeğerdir. Bazen biri diğerinden daha okunabilir.

bir yöntem başvuru kullanmak olacaktır ikincisini yazma alternatif bir yol:

collectionOfThings 
    .stream() 
    .filter(Thing::condition1) 
    .filter(Thing::condition2) 

Ayrıca kongre senin kadar değil, sonuna kadar satırın başında noktayı yerleştirmek için olduğuna dikkat madde işaretli bir liste yazar.

+0

Teşekkürler! Hataları düzeltmek için örneği değiştirdim. –