import java.util.*;

public class CacheKecil {
    // Cache kecil berbasis LinkedHashMap dengan kebijakan LRU.
    static class CacheStok extends LinkedHashMap<String, Integer> {
        private final int kapasitas;

        CacheStok(int kapasitas) {
            super(16, 0.75f, true); // argumen ketiga: accessOrder = true
            this.kapasitas = kapasitas;
        }

        @Override
        protected boolean removeEldestEntry(Map.Entry<String, Integer> eldest) {
            return size() > kapasitas;
        }
    }

    public static void main(String[] args) {
        CacheStok cache = new CacheStok(3);
        System.out.println("Kapasitas cache: 3, mode accessOrder aktif");

        cache.put("pensil", 6000);
        cache.put("buku", 4000);
        cache.put("spidol", 7000);
        System.out.println("isi awal          : " + cache);

        cache.get("pensil");
        System.out.println("setelah get(pensil): " + cache);

        cache.put("tas", 3000);
        System.out.println("setelah put(tas)   : " + cache);

        cache.put("buku", 4500);
        System.out.println("setelah put(buku)  : " + cache);
    }
}
