0Pricing
Java Academy · Ders

Function ve BiFunction

Değerleri işlevsel biçimde dönüştürün

Function ve BiFunction, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. 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.

İşlev Ne İfade Eder

Function<T, R>, java.util.function içindeki temel dönüşüm arayüzüdür. T türünde tek bir bağımsız değişken alır ve R türünde bir sonuç döndürür.

  • Tek soyut metodu R apply(T t) şeklindedir.
  • Girdiden çıktıya saf bir eşlemeyi modeller.
import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        Function<String, Integer> length = s -> s.length();
        System.out.println(length.apply("hello"));
    }
}

apply Çağrısı

Bir Function çağırmak için apply çağrısı yaparsınız. Lambda gövdesi dönüşüm mantığını içerir.

  • Girdi ve çıktı türleri farklı olabilir.
  • String::toUpperCase gibi bir metot başvurusu, lambda yerine kullanılabilir.
import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        Function<String, String> upper = String::toUpperCase;
        System.out.println(upper.apply("java"));
    }
}

andThen ile Birleştirme

andThen, işlevleri zincirler: ilkinin sonucu ikincinin girdisi olur.

  • f.andThen(g), g(f(x)) anlamına gelir.
  • Soldan sağa okunur.
import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        Function<Integer, Integer> times2 = n -> n * 2;
        Function<Integer, Integer> plus3 = n -> n + 3;
        System.out.println(times2.andThen(plus3).apply(5));
    }
}

compose ile Birleştirme

compose, bağımsız değişken olarak verilen işlevi önce çalıştırır.

  • f.compose(g), f(g(x)) anlamına gelir.
  • andThen işleminin ters yönlü karşılığıdır.
import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        Function<Integer, Integer> times2 = n -> n * 2;
        Function<Integer, Integer> plus3 = n -> n + 3;
        System.out.println(times2.compose(plus3).apply(5));
    }
}

Function.identity

Function.identity(), girdisini değiştirmeden geri veren bir işlev döndürür.

  • Akış toplayıcılarında ve varsayılan eşlemelerde kullanışlıdır.
  • x -> x ile eşdeğerdir.
import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        Function<String, String> id = Function.identity();
        System.out.println(id.apply("unchanged"));
    }
}

BiFunction ile Tanışın

BiFunction<T, U, R>, iki bağımsız değişken alır ve tek bir sonuç döndürür.

  • Metodu R apply(T t, U u) şeklindedir.
  • Eşlemeleri birleştirmek gibi iki değeri bir araya getirmek için idealdir.
import java.util.function.BiFunction;

public class Main {
    public static void main(String[] args) {
        BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
        System.out.println(add.apply(4, 6));
    }
}

Farklı Türlerle BiFunction

BiFunction tür parametrelerinin üçü de farklı olabilir.

  • Burada bir String ile bir int değerini bir String içinde birleştiriyoruz.
import java.util.function.BiFunction;

public class Main {
    public static void main(String[] args) {
        BiFunction<String, Integer, String> repeat = (s, n) -> s.repeat(n);
        System.out.println(repeat.apply("ab", 3));
    }
}

BiFunction ve andThen

BiFunction ayrıca andThen işlemini destekler; sonuç üzerinde ek işlem yapmak için tek bağımsız değişkenli bir Function alır.

  • BiFunction üzerinde compose yoktur; çünkü bunun iki girdi alması gerekirdi.
import java.util.function.BiFunction;
import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
        Function<Integer, String> label = n -> "sum=" + n;
        System.out.println(add.andThen(label).apply(7, 8));
    }
}

Koleksiyonlarda İşlevler

Birçok API bir Function kabul eder. Örneğin Map.computeIfAbsent, eksik anahtarlar için bir eşleme işlevi alır.

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> lengths = new HashMap<>();
        lengths.computeIfAbsent("hello", String::length);
        System.out.println(lengths);
    }
}

İşlevleri Değişkenlerde Saklama

İşlevler nesne olduğundan onları saklayabilir, aktarabilir ve döndürebilirsiniz. İşlevsel Java'nın temeli budur.

import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        Function<Integer, Integer> square = n -> n * n;
        Function<Integer, Integer> cube = n -> n * n * n;
        Function<Integer, Integer> chosen = square;
        System.out.println(chosen.apply(5));
    }
}

İşlem Hattı Oluşturma

andThen işlemini art arda zincirlemek, okunabilir ve yeniden kullanılabilir bir dönüşüm işlem hattı oluşturur.

import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        Function<String, String> trim = String::trim;
        Function<String, String> upper = String::toUpperCase;
        Function<String, Integer> len = String::length;
        System.out.println(trim.andThen(upper).andThen(len).apply("  abc "));
    }
}

Kısa Sınama

f.andThen(g).apply(x) neyi hesaplar?

Özet

Temel dönüşüm arayüzlerini öğrendiniz:

  • Function<T,R>, apply ile tek bir değeri eşler.
  • andThen ileriye doğru zincirler (g(f(x))); compose geriye doğru zincirler (f(g(x))).
  • Function.identity() girdisini geri döndürür.
  • BiFunction<T,U,R> iki girdiyi işler ve andThen işlemini destekler, ancak compose işlemini desteklemez.

Sıkça Sorulan Sorular

“Function ve BiFunction” dersi ücretsiz mi?

Evet — “Function ve BiFunction” 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.

“Function ve BiFunction” dersinde ne öğreneceğim?

Değerleri işlevsel biçimde dönüştürün 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 1. dersidir.

“Function ve BiFunction” 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. Function ve BiFunction
  2. Supplier ve Consumer
  3. Predicate ve Birleştirme
  4. Özel İşlevsel Arayüzler
← Java Academy Sayfasına Dön