org.apache.commons.collections.list
Class NodeCachingLinkedList
- List, Serializable
public class NodeCachingLinkedList
implements Serializable
A
List
implementation that stores a cache of internal Node objects
in an effort to reduce wasteful object creation.
A linked list creates one Node for each item of data added. This can result in
a lot of object creation and garbage collection. This implementation seeks to
avoid that by maintaining a store of cached nodes.
This implementation is suitable for long-lived lists where both add and remove
are used. Short-lived lists, or lists which only grow will have worse performance
using this class.
Note that this implementation is not synchronized.
$Revision: 1.7 $ $Date: 2004/04/20 23:46:50 $- Jeff Varszegi
- Rich Dougherty
- Phil Steitz
- Stephen Colebourne
add , add , addAll , addAll , addFirst , addLast , addNode , addNodeAfter , addNodeBefore , clear , contains , containsAll , createHeaderNode , createNode , createSubListIterator , createSubListListIterator , doReadObject , doWriteObject , equals , get , getFirst , getLast , getNode , hashCode , indexOf , init , isEmpty , isEqualValue , iterator , lastIndexOf , listIterator , listIterator , remove , remove , removeAll , removeAllNodes , removeFirst , removeLast , removeNode , retainAll , set , size , subList , toArray , toArray , toString , updateNode |
DEFAULT_MAXIMUM_CACHE_SIZE
protected static final int DEFAULT_MAXIMUM_CACHE_SIZE
cacheSize
protected int cacheSize
The size of the cache.
firstCachedNode
protected AbstractLinkedList.Node firstCachedNode
The first cached node, or null
if no nodes are cached.
Cached nodes are stored in a singly-linked list with
next
pointing to the next element.
maximumCacheSize
protected int maximumCacheSize
The maximum size of the cache.
NodeCachingLinkedList
public NodeCachingLinkedList()
Constructor that creates.
NodeCachingLinkedList
public NodeCachingLinkedList(Collection coll)
Constructor that copies the specified collection
coll
- the collection to copy
NodeCachingLinkedList
public NodeCachingLinkedList(int maximumCacheSize)
Constructor that species the maximum cache size.
maximumCacheSize
- the maximum cache size
addNodeToCache
protected void addNodeToCache(AbstractLinkedList.Node node)
Adds a node to the cache, if the cache isn't full.
The node's contents are cleared to so they can be garbage collected.
node
- the node to add to the cache
getMaximumCacheSize
protected int getMaximumCacheSize()
Gets the maximum size of the cache.
getNodeFromCache
protected AbstractLinkedList.Node getNodeFromCache()
Gets a node from the cache. If a node is returned, then the value of
cacheSize
is decreased accordingly. The node that is returned
will have
null
values for next, previous and element.
- a node, or
null
if there are no nodes in the cache.
isCacheFull
protected boolean isCacheFull()
Checks whether the cache is full.
- true if the cache is full
removeAllNodes
protected void removeAllNodes()
Removes all the nodes from the list, storing as many as required in the
cache for reuse.
- removeAllNodes in interface AbstractLinkedList
setMaximumCacheSize
protected void setMaximumCacheSize(int maximumCacheSize)
Sets the maximum size of the cache.
maximumCacheSize
- the new maximum cache size
shrinkCacheToMaximumSize
protected void shrinkCacheToMaximumSize()
Reduce the size of the cache to the maximum, if necessary.
Copyright © 2001-2006 Apache Software Foundation. All Rights Reserved.