0Pricing
Java Academy · Pelajaran

Function dan BiFunction

Transformasikan nilai secara fungsional.

Function dan BiFunction adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Yang Direpresentasikan oleh Function

Function<T, R> adalah antarmuka transformasi inti dalam java.util.function. Antarmuka ini menerima satu argumen bertipe T dan mengembalikan hasil bertipe R.

  • Metode abstrak tunggalnya adalah R apply(T t).
  • Antarmuka ini memodelkan pemetaan murni dari masukan ke keluaran.
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"));
    }
}

Memanggil apply

Anda memanggil Function dengan memanggil apply. Isi lambda merupakan logika transformasinya.

  • Tipe masukan dan keluaran dapat berbeda.
  • Referensi metode seperti String::toUpperCase dapat menggantikan lambda.
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"));
    }
}

Komposisi andThen

andThen merangkai fungsi: hasil fungsi pertama menjadi masukan bagi fungsi kedua.

  • f.andThen(g) berarti g(f(x)).
  • Urutannya terbaca dari kiri ke kanan.
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));
    }
}

Komposisi compose

compose menjalankan fungsi argumen terlebih dahulu.

  • f.compose(g) berarti f(g(x)).
  • Ini merupakan kebalikan dari andThen.
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() mengembalikan fungsi yang memberikan kembali masukannya tanpa perubahan.

  • Berguna dalam pengumpul aliran dan pemetaan bawaan.
  • Setara dengan x -> x.
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"));
    }
}

Mengenal BiFunction

BiFunction<T, U, R> menerima dua argumen dan mengembalikan satu hasil.

  • Metodenya adalah R apply(T t, U u).
  • Sangat berguna untuk menggabungkan dua nilai, misalnya saat menggabungkan peta.
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));
    }
}

BiFunction dengan Tipe Berbeda

Ketiga parameter tipe pada BiFunction dapat berbeda satu sama lain.

  • Di sini kita menggabungkan String dan int menjadi String.
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 danThen

BiFunction juga mendukung andThen, yang menerima Function berargumen tunggal untuk memproses hasil lebih lanjut.

  • Tidak ada compose pada BiFunction karena metode itu memerlukan dua masukan.
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));
    }
}

Fungsi dalam Koleksi

Banyak API menerima Function. Misalnya, Map.computeIfAbsent menerima fungsi pemetaan untuk kunci yang tidak ada.

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);
    }
}

Menyimpan Fungsi dalam Variabel

Karena fungsi adalah objek, Anda dapat menyimpannya, meneruskannya, dan mengembalikannya. Inilah dasar Java bergaya fungsional.

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));
    }
}

Membangun Alur Transformasi

Merangkai andThen berulang kali akan membangun alur transformasi yang mudah dibaca dan digunakan kembali.

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 "));
    }
}

Pemeriksaan Singkat

Apa yang dihitung oleh f.andThen(g).apply(x)?

Rangkuman

Anda telah mempelajari antarmuka transformasi inti:

  • Function<T,R> memetakan satu nilai dengan apply.
  • andThen merangkai ke depan (g(f(x))); compose merangkai ke belakang (f(g(x))).
  • Function.identity() mengembalikan masukannya.
  • BiFunction<T,U,R> menangani dua masukan dan mendukung andThen, tetapi tidak mendukung compose.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Function dan BiFunction” gratis?

Ya — teks lengkap “Function dan BiFunction” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Function dan BiFunction”?

Transformasikan nilai secara fungsional. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Function dan BiFunction” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Function dan BiFunction
  2. Supplier dan Consumer
  3. Predicate dan Komposisi
  4. Antarmuka Fungsional Kustom
← Kembali ke Java Academy