Class FastCache<K,V>
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- org.glassfish.pfl.dynamic.copyobject.impl.FastCache<K,V>
-
- All Implemented Interfaces:
java.util.Map<K,V>
public class FastCache<K,V> extends java.util.AbstractMap<K,V>
A cache intended to help speed up access to a Map. The idea is that some maps have a few values that are retrieved more frequently than others. So, we create a fixed size array that holds keys and values, and do a very fast hash on the key's identityHashCode. The cache is backed by a map, which can be an IdentityHashMap, or any other map (such as a WeakHashMap) where the keys satisfy k1.equals(k2) implies k1 == k2. Note that all put operations MUST go through this class, because calling put on the underlying map can result in the cache returning incorrect results for get.
-
-
Field Summary
Fields Modifier and Type Field Description private long
cacheCount
private java.lang.Object[]
keys
private java.util.Map<K,V>
map
static int
TABLE_SIZE
private long
totalCount
private java.lang.Object[]
values
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Set<java.util.Map.Entry<K,V>>
entrySet()
V
get(java.lang.Object key)
long
getCacheCount()
long
getTotalCount()
private int
hash(java.lang.Object key)
V
put(K key, V value)
Put the key and value in the cache and the underlying map.-
Methods inherited from class java.util.AbstractMap
clear, clone, containsKey, containsValue, equals, hashCode, isEmpty, keySet, putAll, remove, size, toString, values
-
-
-
-
Field Detail
-
TABLE_SIZE
public static final int TABLE_SIZE
- See Also:
- Constant Field Values
-
keys
private java.lang.Object[] keys
-
values
private java.lang.Object[] values
-
cacheCount
private long cacheCount
-
totalCount
private long totalCount
-
-
Method Detail
-
getCacheCount
public long getCacheCount()
-
getTotalCount
public long getTotalCount()
-
hash
private int hash(java.lang.Object key)
-
get
public V get(java.lang.Object key)
-
-