IntStream dan LongStream
Hindari boxing dalam stream.
IntStream dan LongStream 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.
Mengapa Stream Primitif Ada
Stream<Integer> membungkus setiap elemen menjadi objek Integer. IntStream, LongStream, dan DoubleStream bekerja langsung dengan tipe primitif untuk menghindari overhead pembungkusan.
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int sum = IntStream.of(1, 2, 3, 4).sum();
System.out.println(sum);
}
}Membuat IntStream
Gunakan IntStream.of untuk nilai yang ditentukan secara eksplisit, atau Arrays.stream pada sebuah int[].
import java.util.Arrays;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int[] data = {10, 20, 30};
IntStream s = Arrays.stream(data);
System.out.println(s.max().getAsInt());
}
}LongStream untuk Bilangan Besar
LongStream bekerja seperti IntStream, tetapi menggunakan nilai long sehingga mencegah luapan pada jumlah yang besar.
import java.util.stream.LongStream;
public class Main {
public static void main(String[] args) {
long total = LongStream.of(1_000_000_000L, 2_000_000_000L).sum();
System.out.println(total);
}
}Operasi Akhir Khusus
Stream primitif menambahkan metode numerik yang tidak dimiliki stream objek: sum, min, max, average.
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
IntStream nums = IntStream.of(4, 8, 15, 16, 23, 42);
System.out.println(nums.average().getAsDouble());
}
}Hasil OptionalInt
min dan max mengembalikan OptionalInt karena stream mungkin kosong. Gunakan getAsInt atau orElse.
import java.util.OptionalInt;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
OptionalInt result = IntStream.empty().max();
System.out.println(result.orElse(-1));
}
}map Tetap Primitif
map pada sebuah IntStream menerima IntUnaryOperator dan mengembalikan IntStream lain, sehingga tidak terjadi pembungkusan.
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int sumOfSquares = IntStream.of(1, 2, 3)
.map(n -> n * n)
.sum();
System.out.println(sumOfSquares);
}
}filter pada Stream Primitif
filter menerima IntPredicate dan mempertahankan tipe primitif yang cocok.
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
long evens = IntStream.of(1, 2, 3, 4, 5, 6)
.filter(n -> n % 2 == 0)
.count();
System.out.println(evens);
}
}reduce pada IntStream
reduce menggabungkan seluruh stream menggunakan IntBinaryOperator. Dengan nilai identity, metode ini langsung mengembalikan int.
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int product = IntStream.rangeClosed(1, 5)
.reduce(1, (a, b) -> a * b);
System.out.println(product);
}
}forEach pada Tipe Primitif
forEach menerima IntConsumer, sekali lagi tanpa pembungkusan.
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
IntStream.of(7, 8, 9).forEach(n -> System.out.println(n));
}
}Mengumpulkan ke dalam Larik
toArray mengembalikan int[] primitif, pasangan alami dari IntStream.
import java.util.Arrays;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int[] doubled = IntStream.of(1, 2, 3).map(n -> n * 2).toArray();
System.out.println(Arrays.toString(doubled));
}
}Mengonversi antara int dan Bilangan Bulat Panjang
IntStream.asLongStream memperlebar tipe primitif menjadi long tanpa pembungkusan.
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
long sum = IntStream.of(1, 2, 3).asLongStream().sum();
System.out.println(sum);
}
}Pemeriksaan Singkat
Apa alasan utama menggunakan IntStream alih-alih Stream<Integer>?
Ringkasan
Anda menggunakan stream primitif untuk melewati pembungkusan:
IntStreamdanLongStreammenyimpan tipe primitif langsung.- Keduanya menambahkan operasi numerik akhir:
sum,min,max,average. mindanmaxmengembalikanOptionalInt.map,filter,reduce, dantoArraysemuanya tetap menggunakan tipe primitif.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “IntStream dan LongStream” gratis?
Ya — teks lengkap “IntStream dan LongStream” 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 “IntStream dan LongStream”?
Hindari boxing dalam stream. 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 “IntStream dan LongStream” 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