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::toUpperCasegibi 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.andTheniş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 -> xile 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
Stringile birintdeğerini birStringiç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üzerindecomposeyoktur; çü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>,applyile tek bir değeri eşler.andThenileriye doğru zincirler (g(f(x)));composegeriye doğru zincirler (f(g(x))).Function.identity()girdisini geri döndürür.BiFunction<T,U,R>iki girdiyi işler veandThenişlemini destekler, ancakcomposeiş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
- Function ve BiFunction
- Supplier ve Consumer
- Predicate ve Birleştirme
- Özel İşlevsel Arayüzler