|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.neeve.lang.XCollection<E>
com.neeve.lang.XIndexedList<E>
public class XIndexedList<E>
This class represents a random access collection with real-time behavior (smooth capacity increase).
This class has the following advantages over the widely used
java.util.ArrayList
:
shared
. Iterations over the XIndexedList
values are faster when
performed using the get(int)
method rather than using collection
records or iterators:[code]
for (int i = 0, n = list.size(); i < n; i++) {
list.get(i);
}[/code]
This class was based on collections code from http://javolution.org, but modified for use outside of realtime jvms.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class com.neeve.lang.XCollection |
---|
XCollection.Record |
Constructor Summary | |
---|---|
XIndexedList()
Creates a list of small initial capacity. |
|
XIndexedList(Collection<? extends E> values)
Creates a list containing the specified values, in the order they are returned by the collection's iterator. |
|
XIndexedList(int capacity)
Creates a list of specified initial capacity; unless the list size reaches the specified capacity, operations on this list will not allocate memory (no lazy object creation). |
Method Summary | ||
---|---|---|
boolean |
add(E value)
Appends the specified value to the end of this list. |
|
void |
add(int index,
E value)
Inserts the specified value at the specified position in this list. |
|
boolean |
addAll(int index,
Collection<? extends E> values)
Inserts all of the values in the specified collection into this list at the specified position. |
|
void |
addLast(E value)
Appends the specified value to the end of this list (fast). |
|
void |
clear()
Removes all of the values from this collection (optional operation). |
|
boolean |
contains(Object value)
Indicates if this collection contains the specified value. |
|
void |
delete(XCollection.Record record)
Deletes the specified record from this collection. |
|
E |
get(int index)
Returns the element at the specified index. |
|
E |
getFirst()
Returns the first value of this list. |
|
E |
getLast()
Returns the last value of this list. |
|
XCollection.Record |
head()
Returns the head record of this collection; it is the record such as head().getNext() holds the first collection value. |
|
int |
indexOf(Object value)
Returns the index in this list of the first occurrence of the specified value, or -1 if this list does not contain this value. |
|
XIterator<E> |
iterator()
Returns an iterator over the elements in this list |
|
int |
lastIndexOf(Object value)
Returns the index in this list of the last occurrence of the specified value, or -1 if this list does not contain this value. |
|
ListIterator<E> |
listIterator()
Returns a list iterator over the elements in this list |
|
ListIterator<E> |
listIterator(int index)
Returns a list iterator from the specified position |
|
static
|
newInstance()
Returns a new, preallocated or recycled XIndexedList instance |
|
E |
remove(int index)
Removes the value at the specified position from this list. |
|
E |
removeLast()
Removes and returns the last value of this list (fast). |
|
void |
removeRange(int fromIndex,
int toIndex)
Removes the values between [fromIndex..toIndex[ |
|
void |
reset()
|
|
E |
set(int index,
E value)
Replaces the value at the specified position in this list with the specified value. |
|
void |
setSize(int size)
Sets the size of this list. |
|
int |
size()
Returns the number of values in this collection. |
|
void |
sort(Comparator<? super E> comparator)
|
|
List<E> |
subList(int fromIndex,
int toIndex)
Returns a view of the portion of this list between the specified If the specified indexes are equal, the returned list is empty. |
|
XCollection.Record |
tail()
Returns the tail record of this collection; it is the record such as tail().getPrevious() holds the last collection value. |
|
void |
trimToSize()
Reduces the capacity of this list to the current size (minimize storage space). |
|
List<E> |
unmodifiable()
Returns the unmodifiable view associated to this collection. |
|
E |
valueOf(XCollection.Record record)
Returns the collection value for the specified record. |
Methods inherited from class com.neeve.lang.XCollection |
---|
addAll, containsAll, copyTo, equals, hashCode, isEmpty, remove, removeAll, retainAll, reusableIterator, shared, toArray, toArray, toString |
Methods inherited from class java.lang.Object |
---|
getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface java.util.List |
---|
addAll, containsAll, equals, hashCode, isEmpty, remove, removeAll, retainAll, toArray, toArray |
Constructor Detail |
---|
public XIndexedList()
public XIndexedList(int capacity)
capacity
- the initial capacity.public XIndexedList(Collection<? extends E> values)
values
- the values to be placed into this list.Method Detail |
---|
public static <E> XIndexedList<E> newInstance()
XIndexedList
instance
XIndexedList
instance.public void setSize(int size)
null
elements are added; otherwise
the last elements are removed until the desired size is reached.
size
- the new size.public final E get(int index)
get
in interface List<E>
index
- index of value to return.
IndexOutOfBoundsException
- if (index < 0) ||
(index >= size())
public final E set(int index, E value)
set
in interface List<E>
index
- index of value to replace.value
- value to be stored at the specified position.
IndexOutOfBoundsException
- if (index < 0) ||
(index >= size())
public final boolean add(E value)
add
in interface Collection<E>
add
in interface List<E>
add
in class XCollection<E>
value
- the value to be appended to this list.
true
(as per the general contract of the
Collection.add
method).public final E getFirst()
NoSuchElementException
- if this list is empty.public final E getLast()
NoSuchElementException
- if this list is empty.public final void addLast(E value)
value
- the value to be added.public final E removeLast()
NoSuchElementException
- if this list is empty.public final void clear()
XCollection
clear
in interface Collection<E>
clear
in interface List<E>
clear
in class XCollection<E>
public void reset()
public final boolean addAll(int index, Collection<? extends E> values)
Note: If this method is used concurrent access must be synchronized (the list is no more thread-safe).
addAll
in interface List<E>
index
- the index at which to insert first value from the specified
collection.values
- the values to be inserted into this list.
true
if this list changed as a result of the call;
false
otherwise.
IndexOutOfBoundsException
- if (index < 0) ||
(index > size())
public final void add(int index, E value)
Note: If this method is used concurrent access must be synchronized (the list is no more thread-safe).
add
in interface List<E>
index
- the index at which the specified value is to be inserted.value
- the value to be inserted.
IndexOutOfBoundsException
- if (index < 0) ||
(index > size())
public final E remove(int index)
Note: If this method is used concurrent access must be synchronized (the list is no more thread-safe).
remove
in interface List<E>
index
- the index of the value to removed.
IndexOutOfBoundsException
- if (index < 0) ||
(index >= size())
public final void removeRange(int fromIndex, int toIndex)
[fromIndex..toIndex[ from
this list.
Note: If this method is used concurrent access must be synchronized
(the list is no more thread-safe).
- Parameters:
fromIndex
- the beginning index, inclusive.toIndex
- the ending index, exclusive.
- Throws:
IndexOutOfBoundsException
- if (fromIndex < 0) || (toIndex < 0)
|| (fromIndex > toIndex) || (toIndex > this.size())
public final int indexOf(Object value)
indexOf
in interface List<E>
value
- the value to search for.
public final int lastIndexOf(Object value)
lastIndexOf
in interface List<E>
value
- the value to search for.
public XIterator<E> iterator()
iterator
in interface Iterable<E>
iterator
in interface Collection<E>
iterator
in interface List<E>
iterator
in class XCollection<E>
public ListIterator<E> listIterator()
listIterator
in interface List<E>
public ListIterator<E> listIterator(int index)
listIterator
in interface List<E>
index
- the index of first value to be returned from the
list iterator (by a call to the next
method).
IndexOutOfBoundsException
- if the index is out of range
[code](index < 0 || index > size())[/code]public final List<E> subList(int fromIndex, int toIndex)
indexOf
and
lastIndexOf
, and all of the algorithms in the
Collections
class can be applied to a subList.
The semantics of the list returned by this method become undefined if
the backing list (i.e., this list) is structurally modified in
any way other than via the returned list (structural modifications are
those that change the size of this list, or otherwise perturb it in such
a fashion that iterations in progress may yield incorrect results).
subList
in interface List<E>
fromIndex
- low endpoint (inclusive) of the subList.toIndex
- high endpoint (exclusive) of the subList.
IndexOutOfBoundsException
- if [code](fromIndex < 0 ||
toIndex > size || fromIndex > toIndex)[/code]public final void trimToSize()
public void sort(Comparator<? super E> comparator)
public final int size()
XCollection
size
in interface Collection<E>
size
in interface List<E>
size
in class XCollection<E>
public final XCollection.Record head()
XCollection
head().getNext()
holds the first collection value.
head
in class XCollection<E>
public final XCollection.Record tail()
XCollection
tail().getPrevious()
holds the last collection value.
tail
in class XCollection<E>
public final E valueOf(XCollection.Record record)
XCollection
valueOf
in class XCollection<E>
record
- the record whose current value is returned.
public final void delete(XCollection.Record record)
XCollection
Implementation must ensure that removing a record from the collection does not affect in any way the records preceding the record being removed (it might affect the next records though, e.g. in a list collection, the indices of the subsequent records will change).
delete
in class XCollection<E>
record
- the record to be removed.public List<E> unmodifiable()
XCollection
UnsupportedOperationException
being thrown.
unmodifiable
in class XCollection<E>
public final boolean contains(Object value)
XCollection
contains
in interface Collection<E>
contains
in interface List<E>
contains
in class XCollection<E>
value
- the value whose presence in this collection
is to be tested.
true
if this collection contains the specified
value;false
otherwise.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |