import java.util.List;

public class BuktiLazy {

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

    public static void main(String[] args) {
        List<Produk> produk = List.of(
                new Produk("Kopi Arabika", "minuman", 85000),
                new Produk("Teh Hijau", "minuman", 45000),
                new Produk("Roti Gandum", "makanan", 30000)
        );

        System.out.println("Tahap 1: menyusun pipeline TANPA operasi akhir");
        produk.stream()
                .peek(p -> System.out.println("  filter melihat: " + p.nama()))
                .filter(p -> p.harga() >= 50000)
                .map(Produk::nama);
        System.out.println("  (tidak ada baris 'filter melihat' di atas -- belum ada yang dieksekusi)");

        System.out.println("Tahap 2: pipeline serupa DENGAN operasi akhir");
        List<String> hasil = produk.stream()
                .filter(p -> p.harga() >= 50000)
                .peek(p -> System.out.println("  lolos saringan: " + p.nama()))
                .map(Produk::nama)
                .toList();
        System.out.println("  hasil: " + hasil);
    }
}
