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:
mapToObjatauboxed.
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/mapToDoubleberpindah dari objek ke primitif.mapToObjdanboxedberpindah dari primitif ke objek.flatMapToIntmeratakan 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
- IntStream dan LongStream
- Operasi Rentang dan Agregasi
- Pemetaan ke dan dari Stream Objek
- Membuat Stream Primitif