CodeBlanks Logo Icon CodeBlanks

forEach ve count

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

Main.java
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

Main.java
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

Soru
long n = names.stream().filter(s -> s.length() > 3).____();
Cevap
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

Orta seviye bölümündeki tüm dersler