|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectca.odell.glazedlists.AbstractEventList<E>
ca.odell.glazedlists.TransformedList<E,E>
ca.odell.glazedlists.SortedList<E>
public final class SortedList<E>
An 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 |
Field Summary | |
---|---|
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. |
Fields inherited from class ca.odell.glazedlists.TransformedList |
---|
source |
Fields inherited from class ca.odell.glazedlists.AbstractEventList |
---|
publisher, readWriteLock, updates |
Constructor Summary | |
---|---|
SortedList(EventList<E> source)
Creates a SortedList that sorts the specified EventList . |
|
SortedList(EventList<E> source,
Comparator<? super E> comparator)
Creates a SortedList that sorts the specified EventList
using the specified Comparator to determine sort order. |
Method Summary | ||
---|---|---|
boolean |
contains(Object object)
Returns true if this list contains the specified element. |
|
static
|
create(EventList<E> source)
Creates a SortedList that sorts the specified EventList . |
|
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(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(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. |
|
Iterator<E> |
iterator()
Returns an iterator over the elements in this list in proper sequence. |
|
int |
lastIndexOf(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(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(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(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. |
Methods inherited from class ca.odell.glazedlists.TransformedList |
---|
add, addAll, clear, dispose, get, remove, removeAll, retainAll, set, size |
Methods inherited from class ca.odell.glazedlists.AbstractEventList |
---|
add, addAll, addListEventListener, containsAll, equals, getPublisher, getReadWriteLock, hashCode, isEmpty, listIterator, listIterator, remove, removeListEventListener, subList, toArray, toArray, toString |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final int STRICT_SORT_ORDER
public static final int AVOID_MOVING_ELEMENTS
Constructor Detail |
---|
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, 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.
Method Detail |
---|
public static <E extends 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 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(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(Object object)
indexOf
in interface List<E>
indexOf
in class AbstractEventList<E>
object
- element to search for.
public int lastIndexOf(Object object)
lastIndexOf
in interface List<E>
lastIndexOf
in class AbstractEventList<E>
object
- element to search for.
public int sortIndex(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(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
.
@Deprecated public int indexOfSimulated(Object object)
sortIndex(Object)
which has cleaner semantics.
public boolean contains(Object object)
contains
in interface Collection<E>
contains
in interface List<E>
contains
in class AbstractEventList<E>
object
- element whose presence in this list is to be tested.
public 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
.
iterator
in interface Iterable<E>
iterator
in interface Collection<E>
iterator
in interface List<E>
iterator
in class AbstractEventList<E>
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |