Interface LruCache<K,V>

Type Parameters:
K - type of the keys of the map
V - type of the values of the map
All Known Implementing Classes:
LruCache

public interface LruCache<K,V>
Least recently used cache. This cache has a capacity. When the capacity is reached, the oldest record is removed from the cache when a new one is added.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Default capacity of the cache: 10000.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Capacity of this cache.
    void
    Clear all records in the cache.
    computeValue(K key, Supplier<Optional<V>> valueSupplier)
    Either return a cached value or compute it and cache it.
    static <K, V> LruCache<K,V>
    Create an instance with default capacity.
    static <K, V> LruCache<K,V>
    create(int capacity)
    Create an instance with custom capacity.
    get(K key)
    Get a value from the cache.
    put(K key, V value)
    Put a value to the cache.
    remove(K key)
    Remove a value from the cache.
    int
    Current size of the map.
  • Field Details

    • DEFAULT_CAPACITY

      static final int DEFAULT_CAPACITY
      Default capacity of the cache: 10000.
      See Also:
  • Method Details

    • create

      static <K, V> LruCache<K,V> create()
      Create an instance with default capacity.
      Type Parameters:
      K - key type
      V - value type
      Returns:
      a new cache instance
      See Also:
    • create

      static <K, V> LruCache<K,V> create(int capacity)
      Create an instance with custom capacity.
      Type Parameters:
      K - key type
      V - value type
      Parameters:
      capacity - of the cache
      Returns:
      a new cache instance
    • get

      Optional<V> get(K key)
      Get a value from the cache.
      Parameters:
      key - key to retrieve
      Returns:
      value if present or empty
    • remove

      Optional<V> remove(K key)
      Remove a value from the cache.
      Parameters:
      key - key of the record to remove
      Returns:
      the value that was mapped to the key, or empty if none was
    • put

      Optional<V> put(K key, V value)
      Put a value to the cache.
      Parameters:
      key - key to add
      value - value to add
      Returns:
      value that was already mapped or empty if the value was not mapped
    • computeValue

      Optional<V> computeValue(K key, Supplier<Optional<V>> valueSupplier)
      Either return a cached value or compute it and cache it. In case this method is called in parallel for the same key, the value actually present in the map may be from any of the calls. This method always returns either the existing value from the map, or the value provided by the supplier. It never returns a result from another thread's supplier.
      Parameters:
      key - key to check/insert value for
      valueSupplier - supplier called if the value is not yet cached, or is invalid
      Returns:
      current value from the cache, or computed value from the supplier
    • size

      int size()
      Current size of the map.
      Returns:
      number of records currently cached
    • capacity

      int capacity()
      Capacity of this cache.
      Returns:
      configured capacity of this cache
    • clear

      void clear()
      Clear all records in the cache.