0Pricing
Java Academy · Pelajaran

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:

  • IntStream dan LongStream menyimpan tipe primitif langsung.
  • Keduanya menambahkan operasi numerik akhir: sum, min, max, average.
  • min dan max mengembalikan OptionalInt.
  • map, filter, reduce, dan toArray semuanya 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

  1. IntStream dan LongStream
  2. Operasi Rentang dan Agregasi
  3. Pemetaan ke dan dari Stream Objek
  4. Membuat Stream Primitif
← Kembali ke Java Academy