import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

public class PencarianOpsional {
    public static void main(String[] args) {
        KatalogProduk katalog = new KatalogProduk();
        katalog.tambah("P-001", "Keyboard mekanis");
        katalog.tambah("P-002", "Mouse nirkabel");

        System.out.println(katalog.cari("P-001")
                .map(nama -> "Ditemukan: " + nama)
                .orElse("Tidak ditemukan"));
        System.out.println(katalog.cari("P-999")
                .map(nama -> "Ditemukan: " + nama)
                .orElse("Tidak ditemukan"));
    }
}

class KatalogProduk {
    private final Map<String, String> produk = new HashMap<>();

    void tambah(String kode, String nama) {
        produk.put(kode, nama);
    }

    /**
     * Mencari nama produk berdasarkan kode.
     *
     * Prasyarat : kode tidak null.
     * Jaminan   : hasil tidak pernah null — kode tak dikenal
     *             dikembalikan sebagai Optional.empty().
     */
    Optional<String> cari(String kode) {
        return Optional.ofNullable(produk.get(kode));
    }
}
