public final class ThresholdList<E> extends RangeList<E>
EventList
that shows a range of the elements of the source EventList
. Each
element in the source EventList
is assigned an integer value via an ThresholdList.Evaluator
.
This integer is used to determine whether the element fits in the ThresholdList
s range.
By modifying the upper and lower thresholds in the range, the list can be filtered in a simple and powerful way.
The ThresholdList
lends itself to use with a slider widget for manipulating one of the
range's endpoints.
One use case for ThresholdList
is in a media player application. By creating a
ThresholdList.Evaluator
for a song's bitrate, the user could limit results to MP3 files between 192 and
320kbps.
Note that the elements in the ThresholdList
will be presented in order sorted by their
ThresholdList.Evaluator
value.
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 threshold O(log N) |
Memory: | 72 bytes per element |
Unit Tests: | N/A |
Issues: | 47 137 217 218 246 277 |
Modifier and Type | Class and Description |
---|---|
static interface |
ThresholdList.Evaluator<E>
Provide an integer value for a given
Object in a ThresholdList . |
source
publisher, readWriteLock, updates
Constructor and Description |
---|
ThresholdList(EventList<E> source,
String propertyName)
Creates a
ThresholdList that provides range-filtering based on the specified
EventList based on the specified integer JavaBean property. |
ThresholdList(EventList<E> source,
ThresholdList.Evaluator<E> evaluator)
Creates a
ThresholdList that provides range-filtering on the specified
EventList using the specified ThresholdList.Evaluator . |
Modifier and Type | Method and Description |
---|---|
boolean |
contains(Object object)
Returns
true if this list contains the specified element. |
void |
dispose()
Releases the resources consumed by this
TransformedList so that it may eventually be
garbage collected. |
int |
getEndIndex()
|
ThresholdList.Evaluator<E> |
getEvaluator()
A convenience method to allow access to the
ThresholdList.Evaluator that was provided on
construction. |
int |
getLowerThreshold()
Gets the lower threshold for this list
|
int |
getStartIndex()
|
int |
getUpperThreshold()
Gets the upper threshold for this list
|
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 |
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.
|
void |
setLowerThreshold(E object)
Sets the lower threshold for this list to be the result of calling
evaluate() on the given object. |
void |
setLowerThreshold(int lowerThreshold)
Sets the lower threshold for this list.
|
void |
setRange(int startIndex,
int endIndex)
Set the range of values displayed by this
RangeList . |
void |
setTailRange(int startIndex,
int endIndex)
Set the range to include the specified indices, offset from the end of the source
EventList . |
void |
setUpperThreshold(E object)
Sets the upper threshold for this list to be the result of calling
evaluate() on the given object. |
void |
setUpperThreshold(int upperThreshold)
Sets the upper threshold for this list.
|
adjustRange, getSourceIndex, isWritable, listChanged, setHeadRange, setMiddleRange, size
add, addAll, clear, get, remove, removeAll, retainAll, set
add, addAll, addListEventListener, containsAll, equals, getPublisher, getReadWriteLock, hashCode, isEmpty, iterator, listIterator, listIterator, remove, removeListEventListener, subList, toArray, toArray, toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
replaceAll, sort, spliterator
parallelStream, removeIf, stream
public ThresholdList(EventList<E> source, String propertyName)
ThresholdList
that provides range-filtering based on the specified
EventList
based on the specified integer JavaBean property.public ThresholdList(EventList<E> source, ThresholdList.Evaluator<E> evaluator)
ThresholdList
that provides range-filtering on the specified
EventList
using the specified ThresholdList.Evaluator
.public void setLowerThreshold(E object)
evaluate()
on the given object.
This list can be used programmatically rather than hooking it up to a UI component. Calling this method directly while this list is connected to a particular widget could result in errors.
Warning: This method is thread ready but not
thread safe. See EventList
for an example of thread safe code.
public int getLowerThreshold()
public void setLowerThreshold(int lowerThreshold)
This list can be used programmatically rather than hooking it up to a UI component. Calling this method directly while this list is connected to a particular widget could result in errors.
Warning: This method is thread ready but not
thread safe. See EventList
for an example of thread safe code.
public void setUpperThreshold(E object)
evaluate()
on the given object.
This list can be used programmatically rather than hooking it up to a UI component. Calling this method directly while this list is connected to a particular widget could result in errors.
Warning: This method is thread ready but not
thread safe. See EventList
for an example of thread safe code.
public int getUpperThreshold()
public void setUpperThreshold(int upperThreshold)
Warning: This method is thread ready but not
thread safe. See EventList
for an example of thread safe code.
public ThresholdList.Evaluator<E> getEvaluator()
ThresholdList.Evaluator
that was provided on
construction.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 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 void setRange(int startIndex, int endIndex)
RangeList
.public void setTailRange(int startIndex, int endIndex)
EventList
. For example, to show the last five values, use:
RangeList.setTailRange(5, 0);
To include the 3rd last and 2nd last values, use: RangeList.setTailRange(3, 1);
.
setTailRange
in class RangeList<E>
public int getStartIndex()
getStartIndex
in class RangeList<E>
public int getEndIndex()
getEndIndex
in class RangeList<E>
public void dispose()
TransformedList
so that it may eventually be
garbage collected.
A TransformedList
will be garbage collected without a call to dispose()
, but
not before its source EventList
is garbage collected. By calling #dispose()
,
you allow the TransformedList
to be garbage collected before its source
EventList
. This is necessary for situations where a TransformedList
is
short-lived but its source EventList
is long-lived.
Warning: It is an error to call any method on a
TransformedList
after it has been disposed.
Copyright © 2024 levigo holding gmbh. All rights reserved.