public final class SortedList<E> extends TransformedList<E,E>
EventList that shows its source EventList in sorted order.
The sorting strategy is specified with a Comparator. If no
Comparator is specified, all of the elements of the source EventList
must implement Comparable.
This EventList supports all write operations.
Warning: This class
breaks the contract required by List. See EventList
for an example.
Warning: This class is
thread ready but not thread safe. See EventList for an example
of thread safe code.
| EventList Overview | |
| Writable: | yes |
| Concurrency: | thread ready, not thread safe |
| Performance: | reads: O(log N), writes O(log N), change comparator O(N log N) |
| Memory: | 72 bytes per element |
| Unit Tests: | N/A |
| Issues: | 39 40 58 60 62 66 161 170 206 239 255 261 |
| Modifier and Type | Field and Description |
|---|---|
static int |
AVOID_MOVING_ELEMENTS
Sorting mode where elements aren't moved when their value is changed,
even if this means they are no longer in perfect sorted order.
|
static int |
STRICT_SORT_ORDER
Sorting mode where elements are always in sorted order, even if this
requires that elements be moved from one index to another when their
value is changed.
|
sourcepublisher, readWriteLock, updates| Constructor and Description |
|---|
SortedList(EventList<E> source)
Creates a
SortedList that sorts the specified EventList. |
SortedList(EventList<E> source,
java.util.Comparator<? super E> comparator)
Creates a
SortedList that sorts the specified EventList
using the specified Comparator to determine sort order. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
contains(java.lang.Object object)
Returns true if this list contains the specified element.
|
static <E extends java.lang.Comparable<? super E>> |
create(EventList<E> source)
Creates a
SortedList that sorts the specified EventList. |
java.util.Comparator<? super E> |
getComparator()
Gets the
Comparator that is being used to sort this list. |
int |
getMode()
Get the behaviour mode for this
SortedList. |
protected int |
getSourceIndex(int mutationIndex)
Gets the index in the source
EventList that corresponds to the
specified index. |
int |
indexOf(java.lang.Object object)
Returns the index in this list of the first occurrence of the specified
element, or -1 if this list does not contain this element.
|
int |
indexOfSimulated(java.lang.Object object)
Deprecated.
Deprecated as of 12/11/2005. Replaced with
sortIndex(Object)
which has cleaner semantics. |
protected boolean |
isWritable()
Gets whether the source
EventList is writable via this API. |
java.util.Iterator<E> |
iterator()
Returns an iterator over the elements in this list in proper sequence.
|
int |
lastIndexOf(java.lang.Object object)
Returns the index in this list of the last occurrence of the specified
element, or -1 if this list does not contain this element.
|
int |
lastSortIndex(java.lang.Object object)
Returns the last index of the
object's sort location or
the last index at which the object could be positioned if
inserted. |
void |
listChanged(ListEvent<E> listChanges)
When the underlying list changes, this notification allows the
object to repaint itself or update itself as necessary.
|
void |
setComparator(java.util.Comparator<? super E> comparator)
Set the
Comparator in use in this EventList. |
void |
setMode(int mode)
Modify the behaviour of this
SortedList to one of the predefined modes. |
int |
sortIndex(java.lang.Object object)
Returns the first index of the
object's sort location or
the first index at which the object could be positioned if
inserted. |
add, addAll, clear, dispose, get, remove, removeAll, retainAll, set, sizeadd, addAll, addListEventListener, containsAll, equals, getPublisher, getReadWriteLock, hashCode, isEmpty, listIterator, listIterator, remove, removeListEventListener, subList, toArray, toArray, toStringpublic static final int STRICT_SORT_ORDER
public static final int AVOID_MOVING_ELEMENTS
public SortedList(EventList<E> source)
SortedList that sorts the specified EventList.
Because this constructor takes no Comparator argument, all
elements in the specified EventList must implement Comparable
or a ClassCastException will be thrown.
Usage of factory method create(EventList) is preferable.
source - the EventList to be sortedpublic SortedList(EventList<E> source, java.util.Comparator<? super E> comparator)
SortedList that sorts the specified EventList
using the specified Comparator to determine sort order. If the
specified Comparator is null, then this List
will be unsorted.public static <E extends java.lang.Comparable<? super E>> SortedList<E> create(EventList<E> source)
SortedList that sorts the specified EventList.
All elements in the specified EventList must implement Comparable.source - the EventList to be sortedpublic void setMode(int mode)
SortedList to one of the predefined modes.mode - either STRICT_SORT_ORDER or AVOID_MOVING_ELEMENTS.public int getMode()
SortedList.STRICT_SORT_ORDER (default) or
AVOID_MOVING_ELEMENTS.public void listChanged(ListEvent<E> listChanges)
It is mandatory that the calling thread has obtained the write lock on the source list. This is because the calling thread will have written to the source list to cause this event. This condition guarantees that no writes can occur while the listener is handling this event. It is an error to write to the source list while processing an event.
listChanged in interface ListEventListener<E>listChanged in class TransformedList<E,E>listChanges - a ListEvent describing the changes to the listprotected int getSourceIndex(int mutationIndex)
EventList that corresponds to the
specified index. More formally, returns the index such that
this.get(i) == source.get(getSourceIndex(i)) for all
legal values of i.getSourceIndex in class TransformedList<E,E>protected boolean isWritable()
EventList is writable via this API.
Extending classes must override this method in order to make themselves writable.
isWritable in class TransformedList<E,E>public java.util.Comparator<? super E> getComparator()
Comparator that is being used to sort this list.Comparator in use, or null if this list is
currently unsorted. If this is an EventList of Comparable
elements in natural order, then a ComparableComparator} will
be returned.public void setComparator(java.util.Comparator<? super E> comparator)
Comparator in use in this EventList. This will
sort the source EventList into a new order.
Performance Note: sorting will take O(N * Log N) time.
Warning: This method is
thread ready but not thread safe. See EventList for an example
of thread safe code.
comparator - the Comparator to specify how to sort the list. If
the source EventList elements implement Comparable,
you may use a GlazedLists.comparableComparator() to sort them
in their natural order. You may also specify null to put
this SortedList in unsorted order.public int indexOf(java.lang.Object object)
indexOf in interface java.util.List<E>indexOf in class AbstractEventList<E>object - element to search for.public int lastIndexOf(java.lang.Object object)
lastIndexOf in interface java.util.List<E>lastIndexOf in class AbstractEventList<E>object - element to search for.public int sortIndex(java.lang.Object object)
object's sort location or
the first index at which the object could be positioned if
inserted.
Unlike indexOf(java.lang.Object) this method does not guarantee the given
object equals the element at
the returned index. Instead, they are indistinguishable according to the
sorting Comparator.
public int lastSortIndex(java.lang.Object object)
object's sort location or
the last index at which the object could be positioned if
inserted.
Unlike lastIndexOf(java.lang.Object) this method does not guarantee the given
object equals the element at
the returned index. Instead, they are indistinguishable according to the
sorting Comparator.
public int indexOfSimulated(java.lang.Object object)
sortIndex(Object)
which has cleaner semantics.public boolean contains(java.lang.Object object)
contains in interface java.util.Collection<E>contains in interface java.util.List<E>contains in class AbstractEventList<E>object - element whose presence in this list is to be tested.public java.util.Iterator<E> iterator()
The returned Iterator will become inconsistent if the
EventList that it views is modified. To overcome this problem,
use AbstractEventList.listIterator(). When used concurrently, the returned
Iterator requires locking via this list's
ReadWriteLock.
Glazed Lists, Copyright © 2003 publicobject.com, O'Dell Engineering.
Documentation build by debian at 2016-11-28 3:17