0Pricing
Java Academy · Pelajaran

Pemetaan ke dan dari Stream Objek

mapToObj dan mapToInt.

Pemetaan ke dan dari Stream Objek adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Dua Dunia Stream

Java memiliki stream objek (Stream<T>) dan stream primitif (IntStream dan sejenisnya). Metode pemetaan memungkinkan Anda berpindah di antara keduanya.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        System.out.println(IntStream.rangeClosed(1, 3).sum());
    }
}

mapToObj: Primitif ke Objek

mapToObj mengonversi setiap tipe primitif menjadi objek dan menghasilkan Stream<T>.

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        List<String> labels = IntStream.rangeClosed(1, 3)
            .mapToObj(n -> "item-" + n)
            .collect(Collectors.toList());
        System.out.println(labels);
    }
}

mapToInt: Objek ke Primitif

mapToInt mengambil sebuah int dari setiap objek dan menghasilkan IntStream yang siap untuk agregasi numerik.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> words = List.of("hi", "hello", "hey");
        int totalChars = words.stream()
            .mapToInt(String::length)
            .sum();
        System.out.println(totalChars);
    }
}

boxed: Stream Primitif ke Stream Pembungkus

boxed mengubah IntStream menjadi Stream<Integer>, yang diperlukan sebelum mengumpulkan hasil ke dalam List.

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = IntStream.rangeClosed(1, 5)
            .boxed()
            .collect(Collectors.toList());
        System.out.println(list);
    }
}

mapToLong dan mapToDouble

Pola yang sama berlaku untuk tipe primitif lainnya: mapToLong dan mapToDouble.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> prices = List.of("9.99", "19.50", "4.25");
        double total = prices.stream()
            .mapToDouble(Double::parseDouble)
            .sum();
        System.out.println(total);
    }
}

Mengapa mapToInt Lebih Unggul daripada map

Menggunakan map pada stream objek membuatnya tetap dibungkus. mapToInt membuka akses ke metode numerik seperti sum dan average sekaligus menghindari pembungkusan.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> nums = List.of(10, 20, 30);
        double avg = nums.stream()
            .mapToInt(Integer::intValue)
            .average()
            .getAsDouble();
        System.out.println(avg);
    }
}

Konversi Bolak-Balik: Objek ke Bilangan Bulat lalu ke Objek

Anda dapat berpindah ke kedua arah dalam satu alur pemrosesan: mengambil angka, mengubahnya, lalu memetakannya kembali menjadi objek.

import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> words = List.of("a", "bb", "ccc");
        List<String> report = words.stream()
            .mapToInt(String::length)
            .mapToObj(len -> "len=" + len)
            .collect(Collectors.toList());
        System.out.println(report);
    }
}

asLongStream dan asDoubleStream

Di dalam stream primitif, Anda dapat memperlebar tipe: asLongStream dan asDoubleStream menghindari pembungkusan saat mengubah lebar numerik.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        double avg = IntStream.of(1, 2, 3, 4)
            .asDoubleStream()
            .average()
            .getAsDouble();
        System.out.println(avg);
    }
}

Mengumpulkan Hasil Primitif

Untuk mengumpulkan tipe primitif ke dalam koleksi, panggil boxed terlebih dahulu, lalu gunakan kolektor.

import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        Set<Integer> evens = IntStream.rangeClosed(1, 10)
            .filter(n -> n % 2 == 0)
            .boxed()
            .collect(Collectors.toSet());
        System.out.println(evens);
    }
}

flatMapToInt

flatMapToInt meratakan objek menjadi satu IntStream, yang berguna saat setiap objek menghasilkan beberapa angka.

import java.util.List;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        List<int[]> rows = List.of(new int[]{1, 2}, new int[]{3, 4});
        int sum = rows.stream()
            .flatMapToInt(Arrays::stream)
            .sum();
        System.out.println(sum);
    }
}

Memilih Mapper yang Tepat

Pilih berdasarkan arah:

  • Objek ke primitif: mapToInt, mapToLong, mapToDouble.
  • Primitif ke objek: mapToObj atau boxed.
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> in = List.of("x", "yy");
        String out = in.stream()
            .mapToInt(String::length)
            .mapToObj(Integer::toString)
            .collect(Collectors.joining(","));
        System.out.println(out);
    }
}

Pemeriksaan Singkat

Metode mana yang mengubah IntStream menjadi Stream<Integer>?

Ringkasan

Anda berpindah antara stream objek dan stream primitif:

  • mapToInt/mapToLong/mapToDouble berpindah dari objek ke primitif.
  • mapToObj dan boxed berpindah dari primitif ke objek.
  • flatMapToInt meratakan banyak angka menjadi satu IntStream.
  • Memasuki stream primitif membuka akses ke agregat numerik tanpa pembungkusan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pemetaan ke dan dari Stream Objek” gratis?

Ya — teks lengkap “Pemetaan ke dan dari Stream Objek” 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 “Pemetaan ke dan dari Stream Objek”?

mapToObj dan mapToInt. 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 3 dari 4.

Berapa lama pelajaran “Pemetaan ke dan dari Stream Objek” 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. IntStream dan LongStream
  2. Operasi Rentang dan Agregasi
  3. Pemetaan ke dan dari Stream Objek
  4. Membuat Stream Primitif
← Kembali ke Java Academy