This package contains implementations of the java.util.List List interface.

The following implementations are provided in the package:

  • TreeList - a list that is optimised for insertions and removals at any index in the list
  • CursorableLinkedList - a list that can be modified while the listIterator (cursor) is being used
  • NodeCachingLinkedList - a linked list that caches the storage nodes for a performance gain

The following decorators are provided in the package:

  • Synchronized - synchronizes method access for multi-threaded environments
  • Unmodifiable - ensures the collection cannot be altered
  • Predicated - ensures that only elements that are valid according to a predicate can be added
  • Typed - ensures that only elements that are of a specific type can be added
  • Transformed - transforms each element added
  • FixedSize - ensures that the size of the list cannot change
  • Lazy - creates objects in the list on demand
  • Growth - grows the list instead of erroring when set/add used with index beyond the list size
  • SetUnique - a list that avoids duplicate entries like a Set


AbstractLinkedList An abstract implementation of a linked list which provides numerous points for subclasses to override. 
AbstractLinkedList.LinkedListIterator A list iterator over the linked list. 
AbstractLinkedList.LinkedSubList The sublist implementation for AbstractLinkedList. 
AbstractLinkedList.LinkedSubListIterator A list iterator over the linked sub list. 
AbstractLinkedList.Node A node within the linked list. 
AbstractListDecorator Decorates another List to provide additional behaviour. 
AbstractSerializableListDecorator Serializable subclass of AbstractListDecorator. 
CursorableLinkedList A List implementation with a ListIterator that allows concurrent modifications to the underlying list. 
CursorableLinkedList.Cursor An extended ListIterator that allows concurrent changes to the underlying list. 
CursorableLinkedList.SubCursor A cursor for the sublist based on LinkedSubListIterator. 
FixedSizeList Decorates another List to fix the size preventing add/remove. 
GrowthList Decorates another List to make it seamlessly grow when indices larger than the list size are used on add and set, avoiding most IndexOutOfBoundsExceptions. 
LazyList Decorates another List to create objects in the list on demand. 
NodeCachingLinkedList A List implementation that stores a cache of internal Node objects in an effort to reduce wasteful object creation. 
PredicatedList Decorates another List to validate that all additions match a specified predicate. 
PredicatedList.PredicatedListIterator Inner class Iterator for the PredicatedList  
SetUniqueList Decorates a List to ensure that no duplicates are present much like a Set
SynchronizedList Decorates another List to synchronize its behaviour for a multi-threaded environment. 
TransformedList Decorates another List to transform objects that are added. 
TransformedList.TransformedListIterator Inner class Iterator for the TransformedList  
TreeList A List implementation that is optimised for fast insertions and removals at any index in the list. 
TypedList Decorates another List to validate that elements added are of a specific type. 
UnmodifiableList Decorates another List to ensure it can't be altered.