CodeBlanks Logo Icon CodeBlanks

reduce

reduce ile akümülasyonu öğrenirsin.

Akışı tek değere indirgeme: reduce

reduce akıştaki tüm elemanları tek bir sonucu birleştirir. İki parametreli sürüm bir kimlik değeri ve bir BinaryOperator<T> alır; sonuç her zaman T türünde olur.

Örnek: prices.stream().reduce(0.0, Double::sum). Burada 0.0 başlangıç değeri, Double::sum ise iki değeri toplayan işleçtir. Boş akışta sonuç kimlik değeri olur; bu yüzden Optional döndüren sürümden farklı olarak güvenle kullanılır.

Üç parametreli reduce

Üç parametreli reduce sürümü: kimlik, biriktirici ve birleştirici. Bu sürüm, sonucun türü akış elemanından farklıysa kullanılır; örneğin bir Stream<String>'i int adede indirgemek için.

Örnek: words.stream().reduce(0, (toplam, w) -> toplam + w.length(), Integer::sum). Burada 0 kimlik, ikinci parametre her dizginin uzunluğunu ekleyen biriktirici, üçüncü ise paralel akışta kısmı sonuçları birleştiren işleçtir. Bu form seri akışta da güvenlidir.

Uygulama Fiyatları reduce ile topla

12.5, 25.0 ve 5.0 değerlerinden oluşan bir List<Double> oluştur. Akışı reduce(0.0, Double::sum) ile topla ve sonucu System.out.println ile yazdır.

Başlangıç kodu

Main.java
import java.util.List;

// Fiyatları reduce ile topla
// 0.0 kimlik değeriyle başla
// Toplamı yazdır

Örnek çözüm

Main.java
import java.util.List;

public class SumPrices {
    public static void main(String[] args) {
        List<Double> prices = List.of(12.5, 25.0, 5.0);
        double sum = prices.stream().reduce(0.0, Double::sum);
        System.out.println(sum);
    }
}

Beklenen çıktı

42.5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 reduce çağrısını tamamla

Soru
double sum = prices.stream()
    .reduce(____, Double::sum);
Cevap
double sum = prices.stream()
    .reduce(0.0, Double::sum);

Açıklama: Toplama için kimlik 0.0'dır.

2 reduce sürümlerini eşleştir

Kavram Anlamı
reduce(BinaryOperator) Optional<T> döndürür
reduce(identity, op) T döndürür
reduce(id, acc, comb) Farklı tür döndürür

3 Hangi reduce aşırı yüklemesi Optional<T> döndürür?

  • reduce(identity, BinaryOperator)
  • reduce(BinaryOperator) Doğru cevap
  • reduce(identity, acc, comb)
  • reduce(identity, mapper)

Açıklama: Tek parametreli reduce(BinaryOperator) Optional<T> döndürür.

İleri seviye bölümündeki tüm dersler