Class FastTable<E>
- java.lang.Object
-
- javolution37.javolution.realtime.RealtimeObject
-
- javolution37.javolution.util.FastCollection<E>
-
- javolution37.javolution.util.FastTable<E>
-
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Iterable<E>, java.util.Collection<E>, java.util.List<E>, java.util.RandomAccess, Reusable, Realtime
public class FastTable<E> extends FastCollection<E> implements java.util.List<E>, Reusable, java.util.RandomAccess
This class represents a random access collection with real-time behavior; smooth capacity increase (no array resize/copy ever) and no memory allocation as long as the collection size does not exceed its initial capacity.
This class has the following advantages over the widely used
java.util.ArrayList:- Faster when the capacity is unknown (default constructor) as no array resize/copy is ever performed.
- No large array allocation (for large collections multi-dimensional arrays are employed). Does not stress the garbage collector with large chunk of memory to allocate (likely to trigger a full garbage collection due to memory fragmentation).
- Support concurrent access/iteration without synchronization if the
collection values are not removed/inserted (Ref.
javolution37.javolution.utildiscussion).
Iterations over the
FastTablevalues are faster when performed using theget(int)method rather than using collection records or iterators:for (int i = 0, n = table.size(); i < n; i++) { table.get(i); }FastTablesupportssortingin place (quick sort) using thevalue comparatorfor the table (no object or array allocation when sorting).- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class and Description static classFastTable.IndexThis class represents aFastTableindex; it allows for direct iteration over the collection.-
Nested classes/interfaces inherited from class javolution37.javolution.util.FastCollection
FastCollection.Record
-
Nested classes/interfaces inherited from class javolution37.javolution.realtime.RealtimeObject
RealtimeObject.Factory<T extends RealtimeObject>
-
Nested classes/interfaces inherited from interface javolution37.javolution.realtime.Realtime
Realtime.ObjectSpace
-
-
Constructor Summary
Constructors Constructor and Description FastTable()Creates a table of small initial capacity.FastTable(java.util.Collection<? extends E> values)Creates a table containing the specified values, in the order they are returned by the collection's iterator.FastTable(int capacity)Creates a table of specified initial capacity; unless the table size reaches the specified capacity, operations on this table will not allocate memory (no lazy object creation).FastTable(java.lang.String id)Creates a persistent table associated to the specified unique identifier (convenience method).
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method and Description booleanadd(E value)Appends the specified value to the end of this table.voidadd(int index, E value)Inserts the specified value at the specified position in this table.booleanaddAll(int index, java.util.Collection<? extends E> values)Inserts all of the values in the specified collection into this table at the specified position.voidaddLast(E value)Appends the specified value to the end of this table (fast).voidclear()Removes all of the values from this collection (optional operation).voiddelete(FastCollection.Record record)Deletes the specified record from this collection.Eget(int index)Returns the element at the specified index.EgetFirst()Returns the first value of this table.EgetLast()Returns the last value of this table.FastCollection.Recordhead()Returns the head record of this collection; it is the record such ashead().getNext()holds the first collection value.intindexOf(java.lang.Object value)Returns the index in this table of the first occurrence of the specified value, or -1 if this table does not contain this value.java.util.Iterator<E>iterator()Returns an iterator over the elements in this list (allocated on the stack when executed in aPoolContext).intlastIndexOf(java.lang.Object value)Returns the index in this table of the last occurrence of the specified value, or -1 if this table does not contain this value.java.util.ListIterator<E>listIterator()Returns a list iterator over the elements in this list (allocated on the stack when executed in aPoolContext).java.util.ListIterator<E>listIterator(int index)Returns a list iterator from the specified position (allocated on the stack when executed in aPoolContext).static <E> FastTable<E>newInstance()Returns a table allocated from the "stack" when executing in aPoolContext).Eremove(int index)Removes the value at the specified position from this table.EremoveLast()Removes and returns the last value of this table (fast).voidremoveRange(int fromIndex, int toIndex)Removes the values between[fromIndex..toIndex[from this table.voidreset()Resets the internal state of this object to its default values.Eset(int index, E value)Replaces the value at the specified position in this table with the specified value.intsize()Returns the number of values in this collection.voidsort()Sorts this table in place (quick sort) using this tablevalue comparator.java.util.List<E>subList(int fromIndex, int toIndex)Returns a view of the portion of this list between the specified indexes (instance ofFastListallocated from the "stack" when executing in aPoolContext).FastCollection.Recordtail()Returns the tail record of this collection; it is the record such astail().getPrevious()holds the last collection value.voidtrimToSize()Reduces the capacity of this table to the current size (minimize storage space).java.util.List<E>unmodifiable()Returns the unmodifiable view associated to this collection.EvalueOf(FastCollection.Record record)Returns the collection value for the specified record.-
Methods inherited from class javolution37.javolution.util.FastCollection
addAll, contains, containsAll, equals, getValueComparator, hashCode, isEmpty, remove, removeAll, retainAll, setValueComparator, toArray, toArray, toText
-
Methods inherited from class javolution37.javolution.realtime.RealtimeObject
export, move, moveHeap, preserve, toString, unpreserve
-
-
-
-
Constructor Detail
-
FastTable
public FastTable()
Creates a table of small initial capacity.
-
FastTable
public FastTable(java.lang.String id)
Creates a persistent table associated to the specified unique identifier (convenience method).- Parameters:
id- the unique identifier for this map.- Throws:
java.lang.IllegalArgumentException- if the identifier is not unique.- See Also:
PersistentReference
-
FastTable
public FastTable(int capacity)
Creates a table of specified initial capacity; unless the table size reaches the specified capacity, operations on this table will not allocate memory (no lazy object creation).- Parameters:
capacity- the initial capacity.
-
FastTable
public FastTable(java.util.Collection<? extends E> values)
Creates a table containing the specified values, in the order they are returned by the collection's iterator.- Parameters:
values- the values to be placed into this table.
-
-
Method Detail
-
newInstance
public static <E> FastTable<E> newInstance()
Returns a table allocated from the "stack" when executing in aPoolContext).- Returns:
- a new, preallocated or recycled text builder instance.
-
get
public final E get(int index)
Returns the element at the specified index.- Specified by:
getin interfacejava.util.List<E>- Parameters:
index- index of value to return.- Returns:
- the value at the specified position in this list.
- Throws:
java.lang.IndexOutOfBoundsException- if(index < 0) || (index >= size())
-
set
public final E set(int index, E value)
Replaces the value at the specified position in this table with the specified value.- Specified by:
setin interfacejava.util.List<E>- Parameters:
index- index of value to replace.value- value to be stored at the specified position.- Throws:
java.lang.IndexOutOfBoundsException- if(index < 0) || (index >= size())
-
add
public final boolean add(E value)
Appends the specified value to the end of this table.- Specified by:
addin interfacejava.util.Collection<E>- Specified by:
addin interfacejava.util.List<E>- Overrides:
addin classFastCollection<E>- Parameters:
value- the value to be appended to this table.- Returns:
true(as per the general contract of theCollection.addmethod).
-
getFirst
public final E getFirst()
Returns the first value of this table.- Returns:
- this table first value.
- Throws:
java.util.NoSuchElementException- if this table is empty.
-
getLast
public final E getLast()
Returns the last value of this table.- Returns:
- this table last value.
- Throws:
java.util.NoSuchElementException- if this table is empty.
-
addLast
public final void addLast(E value)
Appends the specified value to the end of this table (fast).- Parameters:
value- the value to be added.
-
removeLast
public final E removeLast()
Removes and returns the last value of this table (fast).- Returns:
- this table's last value before this call.
- Throws:
java.util.NoSuchElementException- if this table is empty.
-
clear
public final void clear()
Description copied from class:FastCollectionRemoves all of the values from this collection (optional operation).- Specified by:
clearin interfacejava.util.Collection<E>- Specified by:
clearin interfacejava.util.List<E>- Overrides:
clearin classFastCollection<E>
-
addAll
public final boolean addAll(int index, java.util.Collection<? extends E> values)Inserts all of the values in the specified collection into this table at the specified position. Shifts the value currently at that position (if any) and any subsequent values to the right (increases their indices).- Specified by:
addAllin interfacejava.util.List<E>- Parameters:
index- the index at which to insert first value from the specified collection.values- the values to be inserted into this list.- Returns:
trueif this list changed as a result of the call;falseotherwise.- Throws:
java.lang.IndexOutOfBoundsException- if(index < 0) || (index > size())
-
add
public final void add(int index, E value)Inserts the specified value at the specified position in this table. Shifts the value currently at that position (if any) and any subsequent values to the right (adds one to their indices).- Specified by:
addin interfacejava.util.List<E>- Parameters:
index- the index at which the specified value is to be inserted.value- the value to be inserted.- Throws:
java.lang.IndexOutOfBoundsException- if(index < 0) || (index > size())
-
remove
public final E remove(int index)
Removes the value at the specified position from this table. Shifts any subsequent values to the left (subtracts one from their indices). Returns the value that was removed from the table.- Specified by:
removein interfacejava.util.List<E>- Parameters:
index- the index of the value to removed.- Returns:
- the value previously at the specified position.
- Throws:
java.lang.IndexOutOfBoundsException- if(index < 0) || (index >= size())
-
removeRange
public final void removeRange(int fromIndex, int toIndex)Removes the values between[fromIndex..toIndex[from this table.- Parameters:
fromIndex- the beginning index, inclusive.toIndex- the ending index, exclusive.- Throws:
java.lang.IndexOutOfBoundsException- if(fromIndex < 0) || (toIndex < 0) || (fromIndex > toIndex) || (toIndex > this.size())
-
indexOf
public final int indexOf(java.lang.Object value)
Returns the index in this table of the first occurrence of the specified value, or -1 if this table does not contain this value.- Specified by:
indexOfin interfacejava.util.List<E>- Parameters:
value- the value to search for.- Returns:
- the index in this table of the first occurrence of the specified value, or -1 if this table does not contain this value.
-
lastIndexOf
public final int lastIndexOf(java.lang.Object value)
Returns the index in this table of the last occurrence of the specified value, or -1 if this table does not contain this value.- Specified by:
lastIndexOfin interfacejava.util.List<E>- Parameters:
value- the value to search for.- Returns:
- the index in this table of the last occurrence of the specified value, or -1 if this table does not contain this value.
-
iterator
public final java.util.Iterator<E> iterator()
Returns an iterator over the elements in this list (allocated on the stack when executed in aPoolContext).
-
listIterator
public final java.util.ListIterator<E> listIterator()
Returns a list iterator over the elements in this list (allocated on the stack when executed in aPoolContext).- Specified by:
listIteratorin interfacejava.util.List<E>- Returns:
- an iterator over this list values.
-
listIterator
public final java.util.ListIterator<E> listIterator(int index)
Returns a list iterator from the specified position (allocated on the stack when executed in aPoolContext). The list iterator being returned does not support insertion/deletion.- Specified by:
listIteratorin interfacejava.util.List<E>- Parameters:
index- the index of first value to be returned from the list iterator (by a call to thenextmethod).- Returns:
- a list iterator of the values in this table starting at the specified position in this list.
- Throws:
java.lang.IndexOutOfBoundsException- if the index is out of range(index < 0 || index > size())
-
subList
public final java.util.List<E> subList(int fromIndex, int toIndex)
Returns a view of the portion of this list between the specified indexes (instance ofFastListallocated from the "stack" when executing in aPoolContext). If the specified indexes are equal, the returned list is empty. The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa. This method eliminates the need for explicit range operations (of the sort that commonly exist for arrays). Any operation that expects a list can be used as a range operation by passing a subList view instead of a whole list. For example, the following idiom removes a range of values from a list:Similar idioms may be constructed forlist.subList(from, to).clear();
indexOfandlastIndexOf, and all of the algorithms in theCollectionsclass 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).- Specified by:
subListin interfacejava.util.List<E>- Parameters:
fromIndex- low endpoint (inclusive) of the subList.toIndex- high endpoint (exclusive) of the subList.- Returns:
- a view of the specified range within this list.
- Throws:
java.lang.IndexOutOfBoundsException- if(fromIndex < 0 || toIndex > size || fromIndex > toIndex)
-
trimToSize
public final void trimToSize()
Reduces the capacity of this table to the current size (minimize storage space).
-
sort
public final void sort()
Sorts this table in place (quick sort) using this tablevalue comparator.
-
size
public final int size()
Description copied from class:FastCollectionReturns the number of values in this collection.- Specified by:
sizein interfacejava.util.Collection<E>- Specified by:
sizein interfacejava.util.List<E>- Specified by:
sizein classFastCollection<E>- Returns:
- the number of values.
-
head
public final FastCollection.Record head()
Description copied from class:FastCollectionReturns the head record of this collection; it is the record such ashead().getNext()holds the first collection value.- Specified by:
headin classFastCollection<E>- Returns:
- the head record.
-
tail
public final FastCollection.Record tail()
Description copied from class:FastCollectionReturns the tail record of this collection; it is the record such astail().getPrevious()holds the last collection value.- Specified by:
tailin classFastCollection<E>- Returns:
- the tail record.
-
valueOf
public final E valueOf(FastCollection.Record record)
Description copied from class:FastCollectionReturns the collection value for the specified record.- Specified by:
valueOfin classFastCollection<E>- Parameters:
record- the record whose current value is returned.- Returns:
- the current value.
-
delete
public final void delete(FastCollection.Record record)
Description copied from class:FastCollectionDeletes the specified record from this collection.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).
- Specified by:
deletein classFastCollection<E>- Parameters:
record- the record to be removed.
-
reset
public void reset()
Description copied from interface:ReusableResets the internal state of this object to its default values.
-
unmodifiable
public java.util.List<E> unmodifiable()
Description copied from class:FastCollectionReturns the unmodifiable view associated to this collection. Attempts to modify the returned collection result in anUnsupportedOperationExceptionbeing thrown. The view is typically part of the collection itself (created only once) and also an instance ofFastCollectionsupporting direct iterations.- Overrides:
unmodifiablein classFastCollection<E>- Returns:
- the unmodifiable view over this collection.
-
-
DMelt 3.0 © DataMelt by jWork.ORG