import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class SisiKiri {

    record Pasangan(int kunci, int nilai) { }

    static final Map<String, List<Integer>> BUKU_NILAI = new LinkedHashMap<>();

    static void catat(String siswa, Integer nilai) {
        // Lambda: parameter siswa tidak dipakai di badan lambda.
        BUKU_NILAI.computeIfAbsent(siswa, _ -> new ArrayList<>()).add(nilai);
    }

    static int catatSemua() {
        catat("Budi", 80);
        catat("Sita", 92);
        catat("Budi", 75);
        return 0; // nilai kembalian sengaja tidak dipedulikan
    }

    public static void main(String[] args) {
        // 1) Deklarasi: efek samping dipakai, hasilnya diabaikan.
        var _ = catatSemua();

        // 2) Loop enhanced: hanya jumlah iterasi dibutuhkan.
        int totalSiswa = 0;
        for (var _ : BUKU_NILAI.keySet()) {
            totalSiswa++;
        }

        // 3) Record pattern: komponen nilai sengaja tidak diikat.
        Object p = new Pasangan(7, 99);
        if (p instanceof Pasangan(int kunci, int _)) {
            System.out.println("kunci          : " + kunci);
        }

        // 4) catch tanpa variabel exception.
        try {
            Integer.parseInt("bukan angka");
        } catch (NumberFormatException _) {
            System.out.println("format angka   : ditolak");
        }

        System.out.println("siswa tercatat : " + totalSiswa);
        System.out.println("buku nilai     : " + BUKU_NILAI);
    }
}
