An implementation of a Map which has a maximum size and uses a Least Recently Used algorithm to remove items from the Map when the maximum size is reached and new items are added.
This implementation uses a simple bubbling algorithm, whereby every random access get() method call bubbles the item up the list, further away from the 'drop zone'.
A synchronized version can be obtained with: Collections.synchronizedMap( theMapToSynchronize )
WARNING the values() and entrySet() methods require optimisation like the standard {@link HashMap} implementations so that iterationover this Map is efficient.
@author
James Strachan