org.siebengeisslein.collections
Class TreeList<EntryType>

java.lang.Object
  extended by org.siebengeisslein.client.Persistent
      extended by org.siebengeisslein.collections.AbstractCollection<EntryType>
          extended by org.siebengeisslein.collections.AbstractPersistentList<EntryType>
              extended by org.siebengeisslein.collections.TreeList<EntryType>
All Implemented Interfaces:
java.lang.Iterable<EntryType>, java.util.Collection<EntryType>, java.util.List<EntryType>, Instrumented

public class TreeList<EntryType>
extends AbstractPersistentList<EntryType>

A List implementation that is optimised for fast insertions and removals at any index in the list.

This list implementation utilises a tree structure internally to ensure that all insertions and removals are O(log n). This provides much faster performance than both an ArrayList and a LinkedList where elements are inserted and removed repeatedly from anywhere in the list.

The following relative performance statistics are indicative of this class:

              get  add  insert  iterate  remove
 TreeList       3    5       1       2       1
 ArrayList      1    1      40       1      40
 LinkedList  5800    1     350       2     325
 
ArrayList is a good general purpose list implementation. It is faster than TreeList for most operations except inserting and removing in the middle of the list. ArrayList also uses less memory as TreeList uses one object per entry.

LinkedList is rarely a good choice of implementation. TreeList is almost always a good replacement for it, although it does use sligtly more memory.

Since:
Commons Collections 3.1
Version:
$Revision: 1.3 $ $Date: 2006/05/31 21:00:51 $
Author:
Joerg Schmuecker, Stephen Colebourne

Nested Class Summary
 
Nested classes/interfaces inherited from class org.siebengeisslein.collections.AbstractPersistentList
AbstractPersistentList.ArrayIterator, AbstractPersistentList.ArrayListIterator, AbstractPersistentList.SubList<T>
 
Constructor Summary
TreeList()
          Constructs a new empty list.
TreeList(java.util.Collection coll)
          Constructs a new empty list that copies the specified list.
 
Method Summary
 void add(int index, EntryType obj)
          Adds a new element to the list.
 void clear()
          Clears the list, removing all entries.
 boolean contains(java.lang.Object object)
          Searches for the presence of an object in the list.
 EntryType get(int index)
          Gets the element at the specified index.
 org.siebengeisslein.collections.TreeList.AVLNode getRoot()
           
 int indexOf(java.lang.Object object)
          Searches for the index of an object in the list.
 java.util.Iterator iterator()
          Gets an iterator over the list.
 java.util.ListIterator listIterator()
          Gets a ListIterator over the list.
 java.util.ListIterator listIterator(int fromIndex)
          Gets a ListIterator over the list.
 EntryType remove(int index)
          Removes the element at the specified index.
 EntryType set(int index, EntryType obj)
          Sets the element at the specified index.
 int size()
          Gets the current size of the list.
 EntryType[] toArray()
          Converts the list into an array.
 
Methods inherited from class org.siebengeisslein.collections.AbstractPersistentList
add, addAll, checkVersion, equals, hashCode, lastIndexOf, remove, subList
 
Methods inherited from class org.siebengeisslein.collections.AbstractCollection
addAll, containsAll, getVersion, incVersion, isEmpty, removeAll, retainAll, toArray, toString
 
Methods inherited from class org.siebengeisslein.client.Persistent
abort, clearUserLocals, clone, commit, disposeTransient, getGroup, getRef, getTransientValue, initTransient, isWriteTransaction, joinWriteTransaction, readLock, setGroup, setTransientValue, toPersistent, toRef, writeExternal, writeLock
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
addAll, containsAll, isEmpty, removeAll, retainAll, toArray
 

Constructor Detail

TreeList

public TreeList()
Constructs a new empty list.


TreeList

public TreeList(java.util.Collection coll)
Constructs a new empty list that copies the specified list.

Parameters:
coll - the collection to copy
Throws:
java.lang.NullPointerException - if the collection is null
Method Detail

get

public EntryType get(int index)
Gets the element at the specified index.

Parameters:
index - the index to retrieve
Returns:
the element at the specified index

size

public int size()
Gets the current size of the list.

Returns:
the current size

iterator

public java.util.Iterator iterator()
Gets an iterator over the list.

Specified by:
iterator in interface java.lang.Iterable<EntryType>
Specified by:
iterator in interface java.util.Collection<EntryType>
Specified by:
iterator in interface java.util.List<EntryType>
Overrides:
iterator in class AbstractPersistentList<EntryType>
Returns:
an iterator over the list

listIterator

public java.util.ListIterator listIterator()
Gets a ListIterator over the list.

Specified by:
listIterator in interface java.util.List<EntryType>
Overrides:
listIterator in class AbstractPersistentList<EntryType>
Returns:
the new iterator

listIterator

public java.util.ListIterator listIterator(int fromIndex)
Gets a ListIterator over the list.

Specified by:
listIterator in interface java.util.List<EntryType>
Overrides:
listIterator in class AbstractPersistentList<EntryType>
Parameters:
fromIndex - the index to start from
Returns:
the new iterator

indexOf

public int indexOf(java.lang.Object object)
Searches for the index of an object in the list.

Specified by:
indexOf in interface java.util.List<EntryType>
Overrides:
indexOf in class AbstractPersistentList<EntryType>
Returns:
the index of the object, -1 if not found

contains

public boolean contains(java.lang.Object object)
Searches for the presence of an object in the list.

Specified by:
contains in interface java.util.Collection<EntryType>
Specified by:
contains in interface java.util.List<EntryType>
Overrides:
contains in class AbstractPersistentList<EntryType>
Returns:
true if the object is found

toArray

public EntryType[] toArray()
Converts the list into an array.

Specified by:
toArray in interface java.util.Collection<EntryType>
Specified by:
toArray in interface java.util.List<EntryType>
Overrides:
toArray in class AbstractCollection<EntryType>
Returns:
the list as an array

add

public void add(int index,
                EntryType obj)
Adds a new element to the list.

Parameters:
index - the index to add before
obj - the element to add

set

public EntryType set(int index,
                     EntryType obj)
Sets the element at the specified index.

Parameters:
index - the index to set
obj - the object to store at the specified index
Returns:
the previous object at that index
Throws:
java.lang.IndexOutOfBoundsException - if the index is invalid

remove

public EntryType remove(int index)
Removes the element at the specified index.

Parameters:
index - the index to remove
Returns:
the previous object at that index

clear

public void clear()
Clears the list, removing all entries.

Specified by:
clear in interface java.util.Collection<EntryType>
Specified by:
clear in interface java.util.List<EntryType>
Overrides:
clear in class AbstractPersistentList<EntryType>

getRoot

public org.siebengeisslein.collections.TreeList.AVLNode getRoot()