Mulai sekarangMulai gratis

Mengimplementasikan cache LRU

Anda sedang mengembangkan aplikasi web yang sering mengambil informasi profil pengguna sebagai string. Untuk meningkatkan kinerja, Anda ingin mengimplementasikan cache sederhana yang menyimpan string profil tersebut dan dapat mengidentifikasi entri mana yang paling jarang digunakan.

Kelas CacheEntry telah disiapkan untuk Anda.

Latihan ini merupakan bagian dari kursus

Optimasi Kode di Java

Lihat Kursus

Instruksi latihan

  • Dalam metode get(), ambil entri cache untuk key yang ditentukan.
  • Setelah mengambil key, perbarui waktu aksesnya.
  • Setelah menaruh entri ke dalam cache, jika kapasitas terlampaui, hapus entri yang paling jarang digunakan.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

public class StringCache {
    private final int capacity = 100;
    private final Map cache = new HashMap<>();
    
    public String get(String key) {
        // Get the entry for the specified key
        CacheEntry entry = ____.get(____);
        if (entry == null) return null;
        // Update its access time
        entry.____();
        return entry.value;
    }
    
    public void put(String key, String value) {
        cache.put(key, new CacheEntry(value));
        if (cache.size() > capacity) {
            // If capacity exceeded, remove least recently used
            ____();
        }
    }

    void removeLeastRecentlyUsed() {
        String lruKey = null;
        long oldest = Long.MAX_VALUE;
        for (Map.Entry e : cache.entrySet()) {
            if (e.getValue().lastAccessed < oldest) {
                oldest = e.getValue().lastAccessed;
                lruKey = e.getKey();
            }
        }
        if (lruKey != null) { cache.remove(lruKey); }
    }

    public static void main(String[] args) {}
}
Edit dan Jalankan Kode