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

public class ParalelProduk {

    record Produk(String nama, String kategori, int harga) {}

    public static void main(String[] args) {
        // 10.000 produk dibangkitkan secara deterministik
        List<Produk> etalase = IntStream.rangeClosed(1, 10_000)
            .mapToObj(n -> new Produk("Produk-" + n,
                n % 2 == 0 ? "elektronik" : "atk", n * 100))
            .collect(Collectors.toList());

        // Pipeline paralel: hasil tetap terurut berkat collect
        List<String> elektronikMurah = etalase.parallelStream()
            .filter(p -> p.kategori().equals("elektronik"))
            .filter(p -> p.harga() <= 250_000)
            .map(p -> p.nama() + " (Rp" + p.harga() + ")")
            .collect(Collectors.toList());

        System.out.println("jumlah hasil   = " + elektronikMurah.size());
        System.out.println("hasil pertama  = " + elektronikMurah.get(0));
        System.out.println("hasil terakhir = " + elektronikMurah.get(elektronikMurah.size() - 1));
    }
}
