public class XCharLinkedList extends XCharCollectionBase implements XCharList
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.
XCharLinkedList (as for any XCollection sub-class) supports
fast iterations without using iterators.[code]
XLinkedList
Alternatively The list can be iterated over using XCharCollectionBase.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 XCharLinkedList.CharNode 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.
| Modifier and Type | Class and Description |
|---|---|
static class |
XCharLinkedList.CharNode
This class represents a
XCharLinkedList node; it allows for direct
iteration over the list values. |
| Constructor and Description |
|---|
XCharLinkedList()
Creates a list of small initial capacity.
|
XCharLinkedList(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).
|
XCharLinkedList(XCharCollection values)
Creates a list containing the specified values, in the order they
are returned by the collection's iterator.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(char value)
Appends the specified value to the end of this list
(equivalent to
addLast(char)). |
void |
add(int index,
char value)
Inserts the specified value at the specified position in this list.
|
boolean |
addAll(int index,
XCharCollection values)
Inserts all of the values in the specified collection into this
list at the specified position.
|
void |
addBefore(XCharLinkedList.CharNode next,
char value)
Inserts the specified value before the specified Node.
|
void |
addFirst(char value)
Inserts the specified value at the beginning of this list.
|
void |
addLast(char 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(char value)
Indicates if this collection contains the specified value.
|
void |
delete(XCollection.Record record)
Deletes the specified record from this collection.
|
char |
get(int index)
Returns the value at the specified position in this list.
|
char |
getFirst()
Returns the first value of this list.
|
char |
getLast()
Returns the last value of this list.
|
XCharLinkedList.CharNode |
head()
Returns the head record of this collection; it is the record such as
head().getNext() holds the first collection value. |
int |
indexOf(char 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.
|
XCharIterator |
iterator()
Returns a simple iterator over the elements in this list
|
int |
lastIndexOf(char 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.
|
XCharListIterator |
listIterator()
Returns a list iterator over the elements in this list.
|
XCharListIterator |
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 XCharLinkedList |
newInstance()
Returns a new list instance.
|
char |
remove(int index)
Removes the value at the specified position in this list.
|
char |
removeFirst()
Removes and returns the first value of this list.
|
char |
removeLast()
Removes and returns the last value of this list (fast).
|
void |
reset() |
char |
set(int index,
char 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.
|
XCharList |
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.
|
XCharLinkedList.CharNode |
tail()
Returns the tail record of this collection; it is the record such as
tail().getPrevious() holds the last collection value. |
XCharList |
unmodifiable()
Returns the unmodifiable view associated to this collection.
|
char |
valueOf(XCollection.Record record)
Returns the collection value for the specified record.
|
addAll, containsAll, equals, hashCode, isEmpty, remove, removeAll, retainAll, reusableIterator, shared, supportsIteratorModifications, toArray, toArray, toStringaddAll, containsAll, equals, hashCode, isEmpty, remove, removeAll, retainAll, toArray, toArrayreusableIterator, shared, supportsIteratorModificationspublic XCharLinkedList()
public XCharLinkedList(int capacity)
capacity - the initial capacity.public XCharLinkedList(XCharCollection values)
values - the values to be placed into this list.public static XCharLinkedList newInstance()
public final boolean add(char value)
addLast(char)).add in interface XCharCollectionadd in interface XCharListadd in class XCharCollectionBasevalue - the value to be appended to this list.true (as per the general contract of the
Collection.add method).public final char get(int index)
get in interface XCharListindex - the index of value to return.IndexOutOfBoundsException - if (index < 0) ||
(index >= size())public final char set(int index,
char value)
set in interface XCharListindex - 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,
char value)
add in interface XCharListindex - 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,
XCharCollection values)
addAll in interface XCharListindex - 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 char remove(int index)
remove in interface XCharListindex - the index of the value to removed.IndexOutOfBoundsException - if (index < 0) ||
(index >= size())public final int indexOf(char value)
public final int lastIndexOf(char value)
lastIndexOf in interface XCharListvalue - the value to search for.public XCharIterator iterator()
iterator in interface XCharCollectioniterator in interface XCharListiterator in class XCharCollectionBasepublic XCharListIterator listIterator()
listIterator in interface XCharListpublic XCharListIterator 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 XCharListindex - 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 XCharList 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 XCharListfromIndex - 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 char getFirst()
NoSuchElementException - if this list is empty.public final char getLast()
NoSuchElementException - if this list is empty.public final void addFirst(char value)
value - the value to be inserted.public void addLast(char value)
value - the value to be inserted.public final char removeFirst()
NoSuchElementException - if this list is empty.public final char removeLast()
NoSuchElementException - if this list is empty.public final void addBefore(XCharLinkedList.CharNode next, char value)
next - the Node before which this value is inserted.value - the value to be inserted.public final XCharLinkedList.CharNode head()
XCharCollectionBasehead().getNext() holds the first collection value.head in interface XCharCollectionhead in class XCharCollectionBasepublic final XCharLinkedList.CharNode tail()
XCharCollectionBasetail().getPrevious() holds the last collection value.tail in interface XCharCollectiontail in class XCharCollectionBasepublic final char valueOf(XCollection.Record record)
XCharCollectionBasevalueOf in interface XCharCollectionvalueOf in class XCharCollectionBaserecord - the record whose current value is returned.public final void delete(XCollection.Record record)
XCharCollectionBaseImplementation 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 XCharCollectiondelete in class XCharCollectionBaserecord - the record to be removed.public final boolean contains(char value)
XCharCollectionBasecontains in interface XCharCollectioncontains in interface XCharListcontains in class XCharCollectionBasevalue - 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()
XCharCollectionBasesize in interface XCharCollectionsize in interface XCharListsize in class XCharCollectionBasepublic final void clear()
XCharCollectionBaseclear in interface XCharCollectionclear in interface XCharListclear in class XCharCollectionBasepublic XCharList unmodifiable()
XCharCollectionBaseUnsupportedOperationException being thrown.unmodifiable in interface XCharCollectionunmodifiable in class XCharCollectionBasepublic void reset()
Copyright © 2019 Neeve Research, LLC. All Rights Reserved.