com.amazon.redshift.util

## Class LruCache<Key,Value extends CanEstimateSize>

- java.lang.Object
- - com.amazon.redshift.util.LruCache<Key,Value>

All Implemented Interfaces:
  Gettable<Key,Value>

    public class LruCache<Key,Value extends CanEstimateSize>
    extends Object
    implements Gettable<Key,Value>

Caches values in simple least-recently-accessed order.

### Nested Class Summary

Nested Classes
`static interface` `LruCache.CreateAction<Key,Value>` When the entry is not present in cache, this create action is used to create one.
`static interface` `LruCache.EvictAction<Value>` Action that is invoked when the entry is removed from the cache.

### Field Summary

Fields
`static LruCache.CreateAction` `NOOP_CREATE_ACTION`
`static LruCache.EvictAction` `NOOP_EVICT_ACTION`

### Constructor Summary

Constructors
Constructor and Description
`LruCache(int maxSizeEntries, long maxSizeBytes, boolean accessOrder)`
`LruCache(int maxSizeEntries, long maxSizeBytes, boolean accessOrder, LruCache.CreateAction<Key,Value> createAction, LruCache.EvictAction<Value> onEvict)`

### Method Summary

Methods
`Value` `borrow(Key key)` Borrows an entry from the cache.
`Value` `get(Key key)` Returns an entry from the cache.
`void` `put(Key key, Value value)` Returns given value to the cache.
`void` `putAll(Map<Key,Value> m)` Puts all the values from the given map into the cache.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### NOOP_CREATE_ACTION

    public static final LruCache.CreateAction NOOP_CREATE_ACTION

#### NOOP_EVICT_ACTION

    public static final LruCache.EvictAction NOOP_EVICT_ACTION

### Constructor Detail

#### LruCache

    public LruCache(int maxSizeEntries,
            long maxSizeBytes,
            boolean accessOrder)

#### LruCache

    public LruCache(int maxSizeEntries,
            long maxSizeBytes,
            boolean accessOrder,
            LruCache.CreateAction<Key,Value> createAction,
            LruCache.EvictAction<Value> onEvict)

### Method Detail

#### get

    public Value get(Key key)

Returns an entry from the cache.

Specified by:
  `get` in interface `Gettable<Key,Value extends CanEstimateSize>`
Parameters:
  `key` - cache key
Returns:
  entry from cache or null if cache does not contain given key.

#### borrow

    public Value borrow(Key key)
                                         throws SQLException

Borrows an entry from the cache.

Parameters:
  `key` - cache key
Returns:
  entry from cache or newly created entry if cache does not contain given key.
Throws:
  `SQLException` - if entry creation fails

#### put

    public void put(Key key,
           Value value)

Returns given value to the cache.

Parameters:
  `key` - key
  `value` - value

#### putAll

    public void putAll(Map<Key,Value> m)

Puts all the values from the given map into the cache.

Parameters:
  `m` - The map containing entries to put into the cache