Java Doc for LRUMap.java in  » Library » Apache-common-Collections » org » apache » commons » collections » map » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Library » Apache common Collections » org.apache.commons.collections.map 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


org.apache.commons.collections.map.AbstractHashedMap
   org.apache.commons.collections.map.AbstractLinkedMap
      org.apache.commons.collections.map.LRUMap

LRUMap
public class LRUMap extends AbstractLinkedMap implements BoundedMap,Serializable,Cloneable(Code)
A Map implementation with a fixed maximum size which removes the least recently used entry if an entry is added when full.

The least recently used algorithm works on the get and put operations only. Iteration of any kind, including setting the value by iteration, does not change the order. Queries such as containsKey and containsValue or access via views also do not change the order.

The map implements OrderedMap and entries may be queried using the bidirectional OrderedMapIterator. The order returned is least recently used to most recently used. Iterators from map views can also be cast to OrderedIterator if required.

All the available iterators can be reset back to the start by casting to ResettableIterator and calling reset().

Note that LRUMap is not synchronized and is not thread-safe. If you wish to use this map from multiple threads concurrently, you must use appropriate synchronization. The simplest approach is to wrap this map using java.util.Collections.synchronizedMap(Map) . This class may throw NullPointerException's when accessed by concurrent threads.
since:
   Commons Collections 3.0 (previously in main package v1.0)
version:
   $Revision: 348299 $ $Date: 2005-11-22 23:51:45 +0000 (Tue, 22 Nov 2005) $
author:
   James Strachan
author:
   Morgan Delagrange
author:
   Stephen Colebourne
author:
   Mike Pettypiece
author:
   Mario Ivankovits



Field Summary
final protected static  intDEFAULT_MAX_SIZE
    

Constructor Summary
public  LRUMap()
     Constructs a new empty map with a maximum size of 100.
public  LRUMap(int maxSize)
     Constructs a new, empty map with the specified maximum size.
public  LRUMap(int maxSize, boolean scanUntilRemovable)
     Constructs a new, empty map with the specified maximum size.
public  LRUMap(int maxSize, float loadFactor)
     Constructs a new, empty map with the specified initial capacity and load factor.
public  LRUMap(int maxSize, float loadFactor, boolean scanUntilRemovable)
     Constructs a new, empty map with the specified initial capacity and load factor.
public  LRUMap(Map map)
     Constructor copying elements from another map.
public  LRUMap(Map map, boolean scanUntilRemovable)
     Constructor copying elements from another map.

Method Summary
protected  voidaddMapping(int hashIndex, int hashCode, Object key, Object value)
     Adds a new key-value mapping into this map.
public  Objectclone()
     Clones the map without cloning the keys or values.
protected  voiddoReadObject(ObjectInputStream in)
     Reads the data necessary for put() to work in the superclass.
protected  voiddoWriteObject(ObjectOutputStream out)
     Writes the data necessary for put() to work in deserialization.
public  Objectget(Object key)
     Gets the value mapped to the key specified.
public  booleanisFull()
     Returns true if this map is full and no new mappings can be added.
public  booleanisScanUntilRemovable()
     Whether this LRUMap will scan until a removable entry is found when the map is full.
public  intmaxSize()
     Gets the maximum size of the map (the bound).
protected  voidmoveToMRU(LinkEntry entry)
     Moves an entry to the MRU position at the end of the list.
protected  booleanremoveLRU(LinkEntry entry)
     Subclass method to control removal of the least recently used entry from the map.

This method exists for subclasses to override.

protected  voidreuseMapping(LinkEntry entry, int hashIndex, int hashCode, Object key, Object value)
     Reuses an entry by removing it and moving it to a new place in the map.
protected  voidupdateEntry(HashEntry entry, Object newValue)
     Updates an existing key-value mapping.

Field Detail
DEFAULT_MAX_SIZE
final protected static int DEFAULT_MAX_SIZE(Code)
Default maximum size




Constructor Detail
LRUMap
public LRUMap()(Code)
Constructs a new empty map with a maximum size of 100.



LRUMap
public LRUMap(int maxSize)(Code)
Constructs a new, empty map with the specified maximum size.
Parameters:
  maxSize - the maximum size of the map
throws:
  IllegalArgumentException - if the maximum size is less than one



LRUMap
public LRUMap(int maxSize, boolean scanUntilRemovable)(Code)
Constructs a new, empty map with the specified maximum size.
Parameters:
  maxSize - the maximum size of the map
Parameters:
  scanUntilRemovable - scan until a removeable entry is found, default false
throws:
  IllegalArgumentException - if the maximum size is less than one
since:
   Commons Collections 3.1



LRUMap
public LRUMap(int maxSize, float loadFactor)(Code)
Constructs a new, empty map with the specified initial capacity and load factor.
Parameters:
  maxSize - the maximum size of the map, -1 for no limit,
Parameters:
  loadFactor - the load factor
throws:
  IllegalArgumentException - if the maximum size is less than one
throws:
  IllegalArgumentException - if the load factor is less than zero



LRUMap
public LRUMap(int maxSize, float loadFactor, boolean scanUntilRemovable)(Code)
Constructs a new, empty map with the specified initial capacity and load factor.
Parameters:
  maxSize - the maximum size of the map, -1 for no limit,
Parameters:
  loadFactor - the load factor
Parameters:
  scanUntilRemovable - scan until a removeable entry is found, default false
throws:
  IllegalArgumentException - if the maximum size is less than one
throws:
  IllegalArgumentException - if the load factor is less than zero
since:
   Commons Collections 3.1



LRUMap
public LRUMap(Map map)(Code)
Constructor copying elements from another map.

The maximum size is set from the map's size.
Parameters:
  map - the map to copy
throws:
  NullPointerException - if the map is null
throws:
  IllegalArgumentException - if the map is empty




LRUMap
public LRUMap(Map map, boolean scanUntilRemovable)(Code)
Constructor copying elements from another map.

The maximum size is set from the map's size.
Parameters:
  map - the map to copy
Parameters:
  scanUntilRemovable - scan until a removeable entry is found, default false
throws:
  NullPointerException - if the map is null
throws:
  IllegalArgumentException - if the map is empty
since:
   Commons Collections 3.1





Method Detail
addMapping
protected void addMapping(int hashIndex, int hashCode, Object key, Object value)(Code)
Adds a new key-value mapping into this map.

This implementation checks the LRU size and determines whether to discard an entry or not using LRUMap.removeLRU(AbstractLinkedMap.LinkEntry) .

From Commons Collections 3.1 this method uses LRUMap.isFull() rather than accessing size and maxSize directly. It also handles the scanUntilRemovable functionality.
Parameters:
  hashIndex - the index into the data array to store at
Parameters:
  hashCode - the hash code of the key to add
Parameters:
  key - the key to add
Parameters:
  value - the value to add




clone
public Object clone()(Code)
Clones the map without cloning the keys or values. a shallow clone



doReadObject
protected void doReadObject(ObjectInputStream in) throws IOException, ClassNotFoundException(Code)
Reads the data necessary for put() to work in the superclass.



doWriteObject
protected void doWriteObject(ObjectOutputStream out) throws IOException(Code)
Writes the data necessary for put() to work in deserialization.



get
public Object get(Object key)(Code)
Gets the value mapped to the key specified.

This operation changes the position of the key in the map to the most recently used position (first).
Parameters:
  key - the key the mapped value, null if no match




isFull
public boolean isFull()(Code)
Returns true if this map is full and no new mappings can be added. true if the map is full



isScanUntilRemovable
public boolean isScanUntilRemovable()(Code)
Whether this LRUMap will scan until a removable entry is found when the map is full. true if this map scans
since:
   Commons Collections 3.1



maxSize
public int maxSize()(Code)
Gets the maximum size of the map (the bound). the maximum number of elements the map can hold



moveToMRU
protected void moveToMRU(LinkEntry entry)(Code)
Moves an entry to the MRU position at the end of the list.

This implementation moves the updated entry to the end of the list.
Parameters:
  entry - the entry to update




removeLRU
protected boolean removeLRU(LinkEntry entry)(Code)
Subclass method to control removal of the least recently used entry from the map.

This method exists for subclasses to override. A subclass may wish to provide cleanup of resources when an entry is removed. For example:

 protected boolean removeLRU(LinkEntry entry) {
 releaseResources(entry.getValue());  // release resources held by entry
 return true;  // actually delete entry
 }
 

Alternatively, a subclass may choose to not remove the entry or selectively keep certain LRU entries. For example:

 protected boolean removeLRU(LinkEntry entry) {
 if (entry.getKey().toString().startsWith("System.")) {
 return false;  // entry not removed from LRUMap
 } else {
 return true;  // actually delete entry
 }
 }
 
The effect of returning false is dependent on the scanUntilRemovable flag. If the flag is true, the next LRU entry will be passed to this method and so on until one returns false and is removed, or every entry in the map has been passed. If the scanUntilRemovable flag is false, the map will exceed the maximum size.

NOTE: Commons Collections 3.0 passed the wrong entry to this method. This is fixed in version 3.1 onwards.
Parameters:
  entry - the entry to be removed




reuseMapping
protected void reuseMapping(LinkEntry entry, int hashIndex, int hashCode, Object key, Object value)(Code)
Reuses an entry by removing it and moving it to a new place in the map.

This method uses LRUMap.removeEntry , LRUMap.reuseEntry and LRUMap.addEntry .
Parameters:
  entry - the entry to reuse
Parameters:
  hashIndex - the index into the data array to store at
Parameters:
  hashCode - the hash code of the key to add
Parameters:
  key - the key to add
Parameters:
  value - the value to add




updateEntry
protected void updateEntry(HashEntry entry, Object newValue)(Code)
Updates an existing key-value mapping.

This implementation moves the updated entry to the top of the list using LRUMap.moveToMRU(AbstractLinkedMap.LinkEntry) .
Parameters:
  entry - the entry to update
Parameters:
  newValue - the new value to store




Fields inherited from org.apache.commons.collections.map.AbstractLinkedMap
protected transient LinkEntry header(Code)(Java Doc)

Methods inherited from org.apache.commons.collections.map.AbstractLinkedMap
protected void addEntry(HashEntry entry, int hashIndex)(Code)(Java Doc)
public void clear()(Code)(Java Doc)
public boolean containsValue(Object value)(Code)(Java Doc)
protected HashEntry createEntry(HashEntry next, int hashCode, Object key, Object value)(Code)(Java Doc)
protected Iterator createEntrySetIterator()(Code)(Java Doc)
protected Iterator createKeySetIterator()(Code)(Java Doc)
protected Iterator createValuesIterator()(Code)(Java Doc)
protected LinkEntry entryAfter(LinkEntry entry)(Code)(Java Doc)
protected LinkEntry entryBefore(LinkEntry entry)(Code)(Java Doc)
public Object firstKey()(Code)(Java Doc)
protected LinkEntry getEntry(int index)(Code)(Java Doc)
protected void init()(Code)(Java Doc)
public Object lastKey()(Code)(Java Doc)
public MapIterator mapIterator()(Code)(Java Doc)
public Object nextKey(Object key)(Code)(Java Doc)
public OrderedMapIterator orderedMapIterator()(Code)(Java Doc)
public Object previousKey(Object key)(Code)(Java Doc)
protected void removeEntry(HashEntry entry, int hashIndex, HashEntry previous)(Code)(Java Doc)

Fields inherited from org.apache.commons.collections.map.AbstractHashedMap
final protected static int DEFAULT_CAPACITY(Code)(Java Doc)
final protected static float DEFAULT_LOAD_FACTOR(Code)(Java Doc)
final protected static int DEFAULT_THRESHOLD(Code)(Java Doc)
final protected static String GETKEY_INVALID(Code)(Java Doc)
final protected static String GETVALUE_INVALID(Code)(Java Doc)
final protected static int MAXIMUM_CAPACITY(Code)(Java Doc)
final protected static String NO_NEXT_ENTRY(Code)(Java Doc)
final protected static String NO_PREVIOUS_ENTRY(Code)(Java Doc)
final protected static Object NULL(Code)(Java Doc)
final protected static String REMOVE_INVALID(Code)(Java Doc)
final protected static String SETVALUE_INVALID(Code)(Java Doc)
protected transient HashEntry[] data(Code)(Java Doc)
protected transient EntrySet entrySet(Code)(Java Doc)
protected transient KeySet keySet(Code)(Java Doc)
protected transient float loadFactor(Code)(Java Doc)
protected transient int modCount(Code)(Java Doc)
protected transient int size(Code)(Java Doc)
protected transient int threshold(Code)(Java Doc)
protected transient Values values(Code)(Java Doc)

Methods inherited from org.apache.commons.collections.map.AbstractHashedMap
protected void addEntry(HashEntry entry, int hashIndex)(Code)(Java Doc)
protected void addMapping(int hashIndex, int hashCode, Object key, Object value)(Code)(Java Doc)
protected int calculateNewCapacity(int proposedCapacity)(Code)(Java Doc)
protected int calculateThreshold(int newCapacity, float factor)(Code)(Java Doc)
protected void checkCapacity()(Code)(Java Doc)
public void clear()(Code)(Java Doc)
protected Object clone()(Code)(Java Doc)
public boolean containsKey(Object key)(Code)(Java Doc)
public boolean containsValue(Object value)(Code)(Java Doc)
protected Object convertKey(Object key)(Code)(Java Doc)
protected HashEntry createEntry(HashEntry next, int hashCode, Object key, Object value)(Code)(Java Doc)
protected Iterator createEntrySetIterator()(Code)(Java Doc)
protected Iterator createKeySetIterator()(Code)(Java Doc)
protected Iterator createValuesIterator()(Code)(Java Doc)
protected void destroyEntry(HashEntry entry)(Code)(Java Doc)
protected void doReadObject(ObjectInputStream in) throws IOException, ClassNotFoundException(Code)(Java Doc)
protected void doWriteObject(ObjectOutputStream out) throws IOException(Code)(Java Doc)
protected void ensureCapacity(int newCapacity)(Code)(Java Doc)
protected int entryHashCode(HashEntry entry)(Code)(Java Doc)
protected Object entryKey(HashEntry entry)(Code)(Java Doc)
protected HashEntry entryNext(HashEntry entry)(Code)(Java Doc)
public Set entrySet()(Code)(Java Doc)
protected Object entryValue(HashEntry entry)(Code)(Java Doc)
public boolean equals(Object obj)(Code)(Java Doc)
public Object get(Object key)(Code)(Java Doc)
protected HashEntry getEntry(Object key)(Code)(Java Doc)
protected int hash(Object key)(Code)(Java Doc)
public int hashCode()(Code)(Java Doc)
protected int hashIndex(int hashCode, int dataSize)(Code)(Java Doc)
protected void init()(Code)(Java Doc)
public boolean isEmpty()(Code)(Java Doc)
protected boolean isEqualKey(Object key1, Object key2)(Code)(Java Doc)
protected boolean isEqualValue(Object value1, Object value2)(Code)(Java Doc)
public Set keySet()(Code)(Java Doc)
public MapIterator mapIterator()(Code)(Java Doc)
public Object put(Object key, Object value)(Code)(Java Doc)
public void putAll(Map map)(Code)(Java Doc)
public Object remove(Object key)(Code)(Java Doc)
protected void removeEntry(HashEntry entry, int hashIndex, HashEntry previous)(Code)(Java Doc)
protected void removeMapping(HashEntry entry, int hashIndex, HashEntry previous)(Code)(Java Doc)
protected void reuseEntry(HashEntry entry, int hashIndex, int hashCode, Object key, Object value)(Code)(Java Doc)
public int size()(Code)(Java Doc)
public String toString()(Code)(Java Doc)
protected void updateEntry(HashEntry entry, Object newValue)(Code)(Java Doc)
public Collection values()(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.