Class FastCache<K,V>
java.lang.Object
java.util.AbstractMap<K,V>
org.glassfish.pfl.dynamic.copyobject.impl.FastCache<K,V>
- All Implemented Interfaces:
Map<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.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,
V>, AbstractMap.SimpleImmutableEntry<K, V> -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Methods inherited from class java.util.AbstractMap
clear, clone, containsKey, containsValue, equals, hashCode, isEmpty, keySet, putAll, remove, size, toString, values
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Field Details
-
TABLE_SIZE
public static final int TABLE_SIZE- See Also:
-
map
-
keys
-
values
-
cacheCount
private long cacheCount -
totalCount
private long totalCount
-
-
Constructor Details
-
FastCache
-
-
Method Details
-
getCacheCount
public long getCacheCount() -
getTotalCount
public long getTotalCount() -
entrySet
-
hash
-
get
-
put
Put the key and value in the cache and the underlying map. This writes through to the map, rather than first storing a value in the cache which is only written as required, because that makes it easier to preserve the correct behavior of the map.
-