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.
|
source
publisher, 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, size
add, addAll, addListEventListener, containsAll, equals, getPublisher, getReadWriteLock, hashCode, isEmpty, listIterator, listIterator, remove, removeListEventListener, subList, toArray, toArray, toString
public 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 mockbuild at 2013-08-03 17:35