# LimitedCache
Date: 2013-02-18

## org.simpleframework.xml.util
Class LimitedCache<T>

    java.lang.Object
      java.util.AbstractMap<K,V>
          java.util.HashMap<K,V>
              java.util.LinkedHashMap<java.lang.Object,T>
                  org.simpleframework.xml.util.LimitedCache<T>

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.Object,T>, Cache<T>

    public class LimitedCache<T>

extends java.util.LinkedHashMap<java.lang.Object,T>
implements Cache<T>

The `LimitedCache` interface is used to represent a cache that will store key value pairs. This implementation is backed by a `LinkedHashMap` so that only a specific number of elements can be stored in the cache at one time.

Author:
  Niall Gallagher
See Also:
  Serialized Form

Nested Class Summary

Nested classes/interfaces inherited from class java.util.AbstractMap
`java.util.AbstractMap.SimpleEntry<K,V>, java.util.AbstractMap.SimpleImmutableEntry<K,V>`

Constructor Summary
`LimitedCache()` Constructor of the `LimitedCache` object.
`LimitedCache(int capacity)` Constructor of the `LimitedCache` object.

Method Summary
`void` `cache(java.lang.Object key, T value)` This method is used to insert a key value mapping in to the cache.
`boolean` `contains(java.lang.Object key)` This is used to determine whether the specified key exists with in the cache.
`T` `fetch(java.lang.Object key)` This method is used to get the value from the cache that is mapped to the specified key.
`protected boolean` `removeEldestEntry(java.util.Map.Entry<java.lang.Object,T> entry)` This is used to remove the eldest entry from the cache.
`T` `take(java.lang.Object key)` This is used to exclusively take the value mapped to the specified key from the cache.

Methods inherited from class java.util.LinkedHashMap
`clear, containsValue, get`

Methods inherited from class java.util.HashMap
`clone, containsKey, entrySet, isEmpty, keySet, put, putAll, remove, size, values`

Methods inherited from class java.util.AbstractMap
`equals, hashCode, toString`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.simpleframework.xml.util.Cache
`isEmpty`

Methods inherited from interface java.util.Map
`containsKey, entrySet, equals, hashCode, isEmpty, keySet, put, putAll, remove, size, values`

Constructor Detail

### LimitedCache

    public LimitedCache()

  Constructor of the `LimitedCache` object. This is used to create a cache with a fixed size. The strategy for this cache is least recently used. Any insert or fetch from the cache is considered to be a use.

### LimitedCache

    public LimitedCache(int capacity)

  Constructor of the `LimitedCache` object. This is used to create a cache with a fixed size. The strategy for this cache is least recently used. Any insert or fetch from the cache is considered to be a use.

  Parameters:
    `capacity` - this is the capacity of the cache object

Method Detail

### cache

    public void cache(java.lang.Object key,
                      T value)

  This method is used to insert a key value mapping in to the cache. The value can later be retrieved or removed from the cache if desired. If the value associated with the key is null then nothing is stored within the cache.

  Specified by:
    `cache` in interface `Cache<T>`
  Parameters:
    `key` - this is the key to cache the provided value to
    `value` - this is the value that is to be cached

### take

    public T take(java.lang.Object key)

  This is used to exclusively take the value mapped to the specified key from the cache. Invoking this is effectively removing the value from the cache.

  Specified by:
    `take` in interface `Cache<T>`
  Parameters:
    `key` - this is the key to acquire the cache value with
  Returns:
    this returns the value mapped to the specified key

### fetch

    public T fetch(java.lang.Object key)

  This method is used to get the value from the cache that is mapped to the specified key. If there is no value mapped to the specified key then this method will return a null.

  Specified by:
    `fetch` in interface `Cache<T>`
  Parameters:
    `key` - this is the key to acquire the cache value with
  Returns:
    this returns the value mapped to the specified key

### contains

    public boolean contains(java.lang.Object key)

  This is used to determine whether the specified key exists with in the cache. Typically this can be done using the fetch method, which will acquire the object.

  Specified by:
    `contains` in interface `Cache<T>`
  Parameters:
    `key` - this is the key to check within this segment
  Returns:
    true if the specified key is within the cache

### removeEldestEntry

    protected boolean removeEldestEntry(java.util.Map.Entry<java.lang.Object,T> entry)

  This is used to remove the eldest entry from the cache. The eldest entry is removed from the cache if the size of the map grows larger than the maximum entries permitted.

  Overrides:
    `removeEldestEntry` in class `java.util.LinkedHashMap<java.lang.Object,T>`
  Parameters:
    `entry` - this is the eldest entry that can be removed
  Returns:
    this returns true if the entry should be removed