|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.neeve.lang.XLongCollectionBase
com.neeve.lang.XLongLinkedList
public class XLongLinkedList
This class represents a linked list with real-time behavior; smooth capacity increase and no memory allocation as long as the list size does not exceed its initial capacity.
All of the operations perform as could be expected for a doubly-linked
list (insertion
/deletion
at the end of the list are nonetheless the fastest).
Operations that index into the list will traverse the list from
the begining or the end whichever is closer to the specified index.
Random access operations can be significantly accelerated by
splitting
the list into smaller ones.
XLongLinkedList
(as for any XCollection
sub-class) supports
fast iterations without using iterators.[code]
XLinkedList
Alternatively The list can be iterated over using XLongCollectionBase.reusableIterator()
. Utilization of
these iterators does not introduce garbage because they are created once. However,
these iterators may not be used concurrently by multiple threads as they are
single instance by nature.
Custom list implementations may override the newNode()
method
in order to return their own XLongLinkedList.LongNode
implementation (with
additional fields for example).
This class was based on collections code from http://javolution.org, but modified for use outside of realtime jvms.
Nested Class Summary | |
---|---|
static class |
XLongLinkedList.LongNode
This class represents a XLongLinkedList node; it allows for direct
iteration over the list values . |
Constructor Summary | |
---|---|
XLongLinkedList()
Creates a list of small initial capacity. |
|
XLongLinkedList(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). |
|
XLongLinkedList(XLongCollection values)
Creates a list containing the specified values, in the order they are returned by the collection's iterator. |
Method Summary | |
---|---|
void |
add(int index,
long value)
Inserts the specified value at the specified position in this list. |
boolean |
add(long value)
Appends the specified value to the end of this list (equivalent to addLast(long) ). |
boolean |
addAll(int index,
XLongCollection values)
Inserts all of the values in the specified collection into this list at the specified position. |
void |
addBefore(XLongLinkedList.LongNode next,
long value)
Inserts the specified value before the specified Node. |
void |
addFirst(long value)
Inserts the specified value at the beginning of this list. |
void |
addLast(long 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(long value)
Indicates if this collection contains the specified value. |
void |
delete(XCollection.Record record)
Deletes the specified record from this collection. |
long |
get(int index)
Returns the value at the specified position in this list. |
long |
getFirst()
Returns the first value of this list. |
long |
getLast()
Returns the last value of this list. |
XLongLinkedList.LongNode |
head()
Returns the head record of this collection; it is the record such as head().getNext() holds the first collection value. |
int |
indexOf(long 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. |
XLongIterator |
iterator()
Returns a simple iterator over the elements in this list |
int |
lastIndexOf(long 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. |
XLongListIterator |
listIterator()
Returns a list iterator over the elements in this list. |
XLongListIterator |
listIterator(int index)
Returns a list iterator from the specified position The specified index indicates the first value that would be returned by an initial call to the next method. |
static XLongLinkedList |
newInstance()
Returns a new list instance. |
long |
remove(int index)
Removes the value at the specified position in this list. |
long |
removeFirst()
Removes and returns the first value of this list. |
long |
removeLast()
Removes and returns the last value of this list (fast). |
void |
reset()
|
long |
set(int index,
long value)
Replaces the value at the specified position in this list with the specified value. |
int |
size()
Returns the number of values in this collection. |
XLongList |
subList(int fromIndex,
int toIndex)
Returns a view of the portion of this list between the specified indexes If the specified indexes are equal, the returned list is empty. |
XLongLinkedList.LongNode |
tail()
Returns the tail record of this collection; it is the record such as tail().getPrevious() holds the last collection value. |
XLongList |
unmodifiable()
Returns the unmodifiable view associated to this collection. |
long |
valueOf(XCollection.Record record)
Returns the collection value for the specified record. |
Methods inherited from class com.neeve.lang.XLongCollectionBase |
---|
addAll, containsAll, 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 com.neeve.lang.XLongList |
---|
addAll, containsAll, equals, hashCode, isEmpty, remove, removeAll, retainAll, toArray, toArray |
Methods inherited from interface com.neeve.lang.XLongCollection |
---|
reusableIterator, shared |
Constructor Detail |
---|
public XLongLinkedList()
public XLongLinkedList(int capacity)
capacity
- the initial capacity.public XLongLinkedList(XLongCollection values)
values
- the values to be placed into this list.Method Detail |
---|
public static XLongLinkedList newInstance()
public final boolean add(long value)
addLast(long)
).
add
in interface XLongCollection
add
in interface XLongList
add
in class XLongCollectionBase
value
- the value to be appended to this list.
true
(as per the general contract of the
Collection.add
method).public final long get(int index)
get
in interface XLongList
index
- the index of value to return.
IndexOutOfBoundsException
- if (index < 0) ||
(index >= size())
public final long set(int index, long value)
set
in interface XLongList
index
- the index of value to replace.value
- the value to be stored at the specified position.
IndexOutOfBoundsException
- if (index < 0) ||
(index >= size())
public final void add(int index, long value)
add
in interface XLongList
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 boolean addAll(int index, XLongCollection values)
addAll
in interface XLongList
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 long remove(int index)
remove
in interface XLongList
index
- the index of the value to removed.
IndexOutOfBoundsException
- if (index < 0) ||
(index >= size())
public final int indexOf(long value)
indexOf
in interface XLongList
value
- the value to search for.
public final int lastIndexOf(long value)
lastIndexOf
in interface XLongList
value
- the value to search for.
public XLongIterator iterator()
iterator
in interface XLongCollection
iterator
in interface XLongList
iterator
in class XLongCollectionBase
public XLongListIterator listIterator()
listIterator
in interface XLongList
public XLongListIterator listIterator(int index)
next
method. An initial call to
the previous
method would return the value with the
specified index minus one.
listIterator
in interface XLongList
index
- 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 XLongList subList(int fromIndex, int toIndex)
list.subList(from, to).clear();
Similar idioms may be constructed for 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 XLongList
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 long getFirst()
NoSuchElementException
- if this list is empty.public final long getLast()
NoSuchElementException
- if this list is empty.public final void addFirst(long value)
value
- the value to be inserted.public void addLast(long value)
value
- the value to be inserted.public final long removeFirst()
NoSuchElementException
- if this list is empty.public final long removeLast()
NoSuchElementException
- if this list is empty.public final void addBefore(XLongLinkedList.LongNode next, long value)
next
- the Node before which this value is inserted.value
- the value to be inserted.public final XLongLinkedList.LongNode head()
XLongCollectionBase
head().getNext()
holds the first collection value.
head
in interface XLongCollection
head
in class XLongCollectionBase
public final XLongLinkedList.LongNode tail()
XLongCollectionBase
tail().getPrevious()
holds the last collection value.
tail
in interface XLongCollection
tail
in class XLongCollectionBase
public final long valueOf(XCollection.Record record)
XLongCollectionBase
valueOf
in interface XLongCollection
valueOf
in class XLongCollectionBase
record
- the record whose current value is returned.
public final void delete(XCollection.Record record)
XLongCollectionBase
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 interface XLongCollection
delete
in class XLongCollectionBase
record
- the record to be removed.public final boolean contains(long value)
XLongCollectionBase
contains
in interface XLongCollection
contains
in interface XLongList
contains
in class XLongCollectionBase
value
- the value whose presence in this collection
is to be tested.
true
if this collection contains the specified
value;false
otherwise.public final int size()
XLongCollectionBase
size
in interface XLongCollection
size
in interface XLongList
size
in class XLongCollectionBase
public final void clear()
XLongCollectionBase
clear
in interface XLongCollection
clear
in interface XLongList
clear
in class XLongCollectionBase
public XLongList unmodifiable()
XLongCollectionBase
UnsupportedOperationException
being thrown.
unmodifiable
in interface XLongCollection
unmodifiable
in class XLongCollectionBase
public void reset()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |