0Pricing
Java Academy · Ders

İlkel Tür Akışları Üretme

iterate ve generate

İlkel Tür Akışları Üretme, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

Sonsuz Akışların Sınırlara İhtiyacı Vardır

iterate ve generate, potansiyel olarak sonsuz akışlar oluşturur. Bunları sonlu hâle getirmek için limit (veya bir koşul) eklemelisiniz.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntStream.iterate(1, n -> n + 1)
            .limit(5)
            .forEach(System.out::println);
    }
}

Başlangıç değeriyle iterate

iterate(seed, next), başlangıç değerinden başlar ve işlevi önceki değere art arda uygular.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntStream.iterate(2, n -> n * 2)
            .limit(5)
            .forEach(System.out::println);
    }
}

Koşulla iterate

Üç bağımsız değişken alan iterate(seed, hasNext, next), koşul false olduğunda işlevsel bir döngü gibi otomatik olarak durur.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntStream.iterate(1, n -> n <= 100, n -> n * 3)
            .forEach(System.out::println);
    }
}

Sağlayıcıyla generate

generate, her öğeyi önceki değere bağlı olmadan bağımsız şekilde üreten bir IntSupplier alır.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        IntStream.generate(() -> 7)
            .limit(3)
            .forEach(System.out::println);
    }
}

Rastgele Sayılar Üretme

Bir generate sağlayıcısı rastgele bir kaynağı çağırabilir. Burada her öğe, bağımsız bir zar atışıdır.

import java.util.Random;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        Random rnd = new Random(42);
        IntStream.generate(() -> rnd.nextInt(6) + 1)
            .limit(5)
            .forEach(System.out::println);
    }
}

iterate ve generate karşılaştırması

Temel fark:

  • iterate: her değer önceki değerden türetilir (diziler).
  • generate: her değer bağımsız olarak üretilir (sabitler, rastgele değerler).
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int sum = IntStream.iterate(1, n -> n + 1).limit(10).sum();
        System.out.println(sum);
    }
}

Üretilen Akışları Toplama

Sınırlandırıldıktan sonra üretilen akışlar, tüm standart toplulaştırma işlemlerini destekler.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        long count = IntStream.iterate(0, n -> n + 2)
            .limit(50)
            .filter(n -> n % 3 == 0)
            .count();
        System.out.println(count);
    }
}

Object Stream üzerinde iterate ile Fibonacci

Fibonacci gibi durum taşıyan diziler için bir dizi çifti üzerinde Stream.iterate kullanın, ardından değeri tekrar int türüne dönüştürün.

import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        Stream.iterate(new int[]{0, 1}, p -> new int[]{p[1], p[0] + p[1]})
            .limit(8)
            .mapToInt(p -> p[0])
            .forEach(System.out::println);
    }
}

Üreticiden Dizi Oluşturma

Yordamsal olarak ilkel türde bir dizi oluşturmak için bir üreticiyi toArray ile birleştirin.

import java.util.Arrays;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int[] squares = IntStream.iterate(1, n -> n + 1)
            .limit(5)
            .map(n -> n * n)
            .toArray();
        System.out.println(Arrays.toString(squares));
    }
}

Tembellik İş Yükünü Azaltır

Akışlar tembel değerlendirilir: limit kullanıldığında, sonsuz bir kaynaktan bile yalnızca gerekli öğeler üretilir.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int first = IntStream.iterate(10, n -> n + 10)
            .filter(n -> n > 25)
            .findFirst()
            .getAsInt();
        System.out.println(first);
    }
}

Koşul Biçimini Tercih Edin

Koşul tabanlı iterate, durma koşulunu üretim mantığıyla birlikte tuttuğu için çoğu zaman iterate(...).limit(...) biçiminden daha anlaşılırdır.

import java.util.stream.LongStream;

public class Main {
    public static void main(String[] args) {
        long product = LongStream.iterate(1, n -> n <= 5, n -> n + 1)
            .reduce(1, (a, b) -> a * b);
        System.out.println(product);
    }
}

Hızlı Kontrol

generate çağrısını limit olmadan yapıp ardından forEach gibi bir sonlandırıcı işlem çağırırsanız ne olur?

Özet

İlkel türde akışlar ürettiniz:

  • iterate, her değeri önceki değerden türetir.
  • generate, değerleri bir sağlayıcıdan bağımsız olarak üretir.
  • Her ikisi de sonsuzdur; bunları limit veya iterate yönteminin koşul biçimiyle sınırlandırın.
  • Tembel değerlendirme, yalnızca gerekli öğelerin hesaplanmasını sağlar.

Sıkça Sorulan Sorular

“İlkel Tür Akışları Üretme” dersi ücretsiz mi?

Evet — “İlkel Tür Akışları Üretme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“İlkel Tür Akışları Üretme” dersinde ne öğreneceğim?

iterate ve generate Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“İlkel Tür Akışları Üretme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. IntStream ve LongStream
  2. Aralık ve Birleştirme İşlemleri
  3. Nesne Akışlarına ve Nesne Akışlarından Eşleme
  4. İlkel Tür Akışları Üretme
← Java Academy Sayfasına Dön