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,
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(Object object)
Returns
true if this list contains the specified element. |
static <E extends Comparable<? super E>> |
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. |
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
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
replaceAll, sort, spliterator
parallelStream, removeIf, stream
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, 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 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 int getMode()
SortedList
.STRICT_SORT_ORDER
(default) or AVOID_MOVING_ELEMENTS
.public void setMode(int mode)
SortedList
to one of the predefined modes.mode
- either STRICT_SORT_ORDER
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)
i
such
that (o==null ? get(i)==null : o.equals(get(i)))
, or -1 if there is no such index.public int lastIndexOf(Object object)
i
such
that (o==null ? get(i)==null : o.equals(get(i)))
, or -1 if there is no such index.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
.
[0, size()]
inclusivepublic 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
.
[0, size()]
inclusive@Deprecated public int indexOfSimulated(Object object)
sortIndex(Object)
which has
cleaner semantics.[0, size()]
, inclusive.public boolean contains(Object object)
true
if this list contains the specified element. More formally, returns
true
if and only if this list contains at least one element e
such that
(o==null ? e==null : o.equals(e))
.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.true
if this list contains the specified element.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
.
Copyright © 2024 levigo holding gmbh. All rights reserved.