Class TreeList<E>
- All Implemented Interfaces:
Iterable<E>
,Collection<E>
,List<E>
List
implementation that is optimized 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 slightly more memory.
- Since:
- 3.1
-
Field Summary
Fields inherited from class java.util.AbstractList
modCount
-
Constructor Summary
ConstructorDescriptionTreeList()
Constructs a new empty list.TreeList
(Collection<? extends E> coll) Constructs a new empty list that copies the specified collection. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a new element to the list.boolean
addAll
(Collection<? extends E> c) Appends all the elements in the specified collection to the end of this list, in the order that they are returned by the specified collection's Iterator.void
clear()
Clears the list, removing all entries.boolean
Searches for the presence of an object in the list.get
(int index) Gets the element at the specified index.int
Searches for the index of an object in the list.iterator()
Gets an iterator over the list.Gets a ListIterator over the list.listIterator
(int fromIndex) Gets a ListIterator over the list.remove
(int index) Removes the element at the specified index.Sets the element at the specified index.int
size()
Gets the current size of the list.Object[]
toArray()
Converts the list into an array.Methods inherited from class java.util.AbstractList
add, addAll, equals, hashCode, lastIndexOf, removeRange, subList
Methods inherited from class java.util.AbstractCollection
containsAll, isEmpty, remove, removeAll, retainAll, toArray, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream
Methods inherited from interface java.util.List
containsAll, isEmpty, remove, removeAll, replaceAll, retainAll, sort, spliterator, toArray
-
Constructor Details
-
TreeList
public TreeList()Constructs a new empty list. -
TreeList
Constructs a new empty list that copies the specified collection.- Parameters:
coll
- the collection to copy- Throws:
NullPointerException
- if the collection is null
-
-
Method Details
-
add
Adds a new element to the list. -
addAll
Appends all the elements in the specified collection to the end of this list, in the order that they are returned by the specified collection's Iterator.This method runs in O(n + log m) time, where m is the size of this list and n is the size of
c
.- Specified by:
addAll
in interfaceCollection<E>
- Specified by:
addAll
in interfaceList<E>
- Overrides:
addAll
in classAbstractCollection<E>
- Parameters:
c
- the collection to be added to this list- Returns:
true
if this list changed as a result of the call- Throws:
NullPointerException
-
clear
Clears the list, removing all entries.- Specified by:
clear
in interfaceCollection<E>
- Specified by:
clear
in interfaceList<E>
- Overrides:
clear
in classAbstractList<E>
-
contains
Searches for the presence of an object in the list.- Specified by:
contains
in interfaceCollection<E>
- Specified by:
contains
in interfaceList<E>
- Overrides:
contains
in classAbstractCollection<E>
- Parameters:
object
- the object to check- Returns:
- true if the object is found
-
get
Gets the element at the specified index. -
indexOf
Searches for the index of an object in the list. -
iterator
Gets an iterator over the list. -
listIterator
Gets a ListIterator over the list.- Specified by:
listIterator
in interfaceList<E>
- Overrides:
listIterator
in classAbstractList<E>
- Returns:
- the new iterator
-
listIterator
Gets a ListIterator over the list.- Specified by:
listIterator
in interfaceList<E>
- Overrides:
listIterator
in classAbstractList<E>
- Parameters:
fromIndex
- the index to start from- Returns:
- the new iterator
-
remove
Removes the element at the specified index. -
set
Sets the element at the specified index.- Specified by:
set
in interfaceList<E>
- Overrides:
set
in classAbstractList<E>
- Parameters:
index
- the index to setobj
- the object to store at the specified index- Returns:
- the previous object at that index
- Throws:
IndexOutOfBoundsException
- if the index is invalid
-
size
Gets the current size of the list.- Specified by:
size
in interfaceCollection<E>
- Specified by:
size
in interfaceList<E>
- Specified by:
size
in classAbstractCollection<E>
- Returns:
- the current size
-
toArray
Converts the list into an array.- Specified by:
toArray
in interfaceCollection<E>
- Specified by:
toArray
in interfaceList<E>
- Overrides:
toArray
in classAbstractCollection<E>
- Returns:
- the list as an array
-