forEach ve count
- Java kursu
- Orta seviye
- Ders 109/116
- 5 dk
forEach ile işlem ve count ile saymayı öğrenirsin.
forEach terminal işlemi
forEach(Consumer) bir terminal işlemdir; akıştaki her eleman için bir action çalıştırır ve akışı kapatır. names.stream().forEach(s -> System.out.println(s)); her ismi yazdırır.
forEach bir değer döndürmez; yan etki (side effect) için kullanılır. Sıralı akışta elemanları kaynaktaki sırayla gezer. forEach yerine genellikle Collectors.toList() gibi sonuç toplayıcılar tercih edilir; yan etki zorunluysa forEach uygundur.
count vs sum
count() akıştaki eleman sayısını long olarak döndürür; sum() yalnızca sayısal akışlarda (IntStream vb.) çalışır ve sayıların toplamını verir. İkisi de terminaldır.
Örneğin names.stream().count() isim sayısı, names.stream().mapToInt(String::length).sum() uzunlukların toplamıdır. reduce terminalı de yinelemeyle toplam üretebilir: .reduce(0, (a, b) -> a + b). Üç yöntem de farklı amaçlara uygundur.
Uygulama Akış ile yazdır ve say
List<String> names = new ArrayList<>(); tanımla; "Ayşe", "Alex" ekle. Önce names.stream().forEach(s -> System.out.println(s)); ile her ismi yazdır. Sonra System.out.println(names.stream().count()); ile sayıyı yazdır.
Başlangıç kodu
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// List<String> tanımla, iki isim ekle, forEach ile yazdır, count ile sayıyı yazdır
}
}Örnek çözüm
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Ayşe");
names.add("Alex");
names.stream().forEach(s -> System.out.println(s));
System.out.println(names.stream().count());
}
}Beklenen çıktı
Ayşe Alex 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 count çağrısını tamamla
long n = names.stream().filter(s -> s.length() > 3).____();
long n = names.stream().filter(s -> s.length() > 3).count();
Açıklama: count() eleman sayısını döndürür.
2 Stream üzerinde count() ne döndürür?
- int
- void
- long Doğru cevap
- Optional<Long>
Açıklama: count() bir long döndürür; akıştaki eleman sayısı.
3 Terminal işlemleri eşleştir
| Kavram | Anlamı |
|---|---|
forEach(...) |
Yan etki üretir |
count() |
Eleman sayısı |
sum() |
Sayısal toplam |
reduce(...) |
Yinelemeli birleştirme |