martin.common
Class CacheMap<K,V extends Sizeable>

java.lang.Object
  extended by martin.common.CacheMap<K,V>
All Implemented Interfaces:
java.lang.Iterable<K>

public class CacheMap<K,V extends Sizeable>
extends java.lang.Object
implements java.lang.Iterable<K>


Field Summary
private  long currentSize
           
private  Function<V> factory
           
private  java.util.HashMap<K,V> hashMap
           
private  java.util.logging.Logger logger
           
private  long maxSize
           
private  java.util.LinkedList<K> priority
           
private  java.util.HashMap<K,java.lang.Long> sizes
           
 
Constructor Summary
CacheMap(long maxSize)
           
CacheMap(long maxSize, Function<V> factory, java.util.logging.Logger logger)
           
 
Method Summary
 void clear()
           
 boolean containsKey(K key)
           
private  void free()
           
 V get(K key)
           
 V getOrCreate(K key)
           
 java.util.Iterator<K> iterator()
           
 java.util.Set<K> keySet()
           
 java.lang.String listKeys()
           
static void main(java.lang.String[] args)
           
 void put(K key, V value)
           
 V remove(K key)
           
 java.util.Collection<V> values()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

hashMap

private java.util.HashMap<K,V extends Sizeable> hashMap

sizes

private java.util.HashMap<K,java.lang.Long> sizes

priority

private java.util.LinkedList<K> priority

maxSize

private long maxSize

currentSize

private long currentSize

factory

private Function<V extends Sizeable> factory

logger

private java.util.logging.Logger logger
Constructor Detail

CacheMap

public CacheMap(long maxSize)

CacheMap

public CacheMap(long maxSize,
                Function<V> factory,
                java.util.logging.Logger logger)
Method Detail

get

public V get(K key)

put

public void put(K key,
                V value)

listKeys

public java.lang.String listKeys()

free

private void free()

remove

public V remove(K key)

containsKey

public boolean containsKey(K key)

iterator

public java.util.Iterator<K> iterator()
Specified by:
iterator in interface java.lang.Iterable<K>

keySet

public java.util.Set<K> keySet()

values

public java.util.Collection<V> values()

main

public static void main(java.lang.String[] args)

getOrCreate

public V getOrCreate(K key)

clear

public void clear()