Sobes.tech
Junior

Java'da akışlar ne için kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Veri koleksiyonlarının deklaratif işlenmesi için. Koleksiyonların öğeleri üzerinde sıralı veya paralel işlemler yapmaya olanak tanır, örneğin filtreleme, haritalama (dönüşüm), toplama ve sonuçların toplanması, kodu daha okunabilir ve esnek hale getirir.

Ana avantajlar:

  • Deklaratif: "Nasıl" yapılacağını (döngüler, yineleyiciler) tanımlamak yerine, "ne" yapılması gerektiğini tanımlarız.
  • Paralelizm: Sıralı ve paralel işlem arasında kolayca geçiş yapabilir, bu çok çekirdekli sistemler için faydalıdır.
  • Lazy: Ara işlemler, yalnızca gerekliyse ve terminal işlem mevcutsa yürütülür.
  • Kısalık: Geleneksel döngülere kıyasla kod miktarını azaltabilir.

Sıralı işlem örneği:

// 18 yaşından büyük kullanıcıların isimlerini alıp büyük harfe dönüştürme
List<User> users = ... // Kullanıcı koleksiyonunuz
List<String> adultUserNames = users.stream()
    .filter(user -> user.getAge() >= 18) // Yaşa göre filtreleme
    .map(user -> user.getName().toUpperCase()) // İsmi büyük harfe dönüştürme
    .collect(Collectors.toList()); // Sonuçları listeye toplama

Paralel işlem örneği:

// Listede büyük sayıların paralel toplamı
List<Long> numbers = ... // Sayı koleksiyonunuz
long sum = numbers.parallelStream()
    .reduce(0L, Long::sum); // Paralel toplam

Bu şekilde, Java'daki streamler, veri işleme konusunda fonksiyonel ve verimli bir yaklaşım sağlar.