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 longcacheCountprivate java.lang.Object[]keysprivate java.util.Map<K,V>mapstatic intTABLE_SIZEprivate longtotalCountprivate 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()Vget(java.lang.Object key)longgetCacheCount()longgetTotalCount()private inthash(java.lang.Object key)Vput(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)
-
-