org.glassfish.pfl.dynamic.copyobject.impl
Class FastCache<K,V>

java.lang.Object
  extended by java.util.AbstractMap<K,V>
      extended by org.glassfish.pfl.dynamic.copyobject.impl.FastCache<K,V>
All Implemented Interfaces:
Map<K,V>

public class FastCache<K,V>
extends 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.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Field Summary
static int TABLE_SIZE
           
 
Constructor Summary
FastCache(Map<K,V> map)
           
 
Method Summary
 Set<Map.Entry<K,V>> entrySet()
           
 V get(Object key)
           
 long getCacheCount()
           
 long getTotalCount()
           
 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
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

TABLE_SIZE

public static final int TABLE_SIZE
See Also:
Constant Field Values
Constructor Detail

FastCache

public FastCache(Map<K,V> map)
Method Detail

getCacheCount

public long getCacheCount()

getTotalCount

public long getTotalCount()

entrySet

public Set<Map.Entry<K,V>> entrySet()
Specified by:
entrySet in interface Map<K,V>
Specified by:
entrySet in class AbstractMap<K,V>

get

public V get(Object key)
Specified by:
get in interface Map<K,V>
Overrides:
get in class AbstractMap<K,V>

put

public V put(K key,
             V value)
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.

Specified by:
put in interface Map<K,V>
Overrides:
put in class AbstractMap<K,V>


Copyright © 2013 Oracle. All Rights Reserved.