public abstract class ForwardingNavigableSet<E> extends ForwardingSortedSet<E> implements NavigableSet<E>
A navigable set which forwards all its method calls to another navigable set. Subclasses should override one or more methods to modify the behavior of the backing set as desired per the decorator pattern.
Warning: The methods of ForwardingNavigableSet
forward indiscriminately to the methods of the delegate. For example, overriding ForwardingCollection.add(E)
alone will not change the behavior of ForwardingCollection.addAll(java.util.Collection<? extends E>)
, which can lead to unexpected behavior. In this case, you should override addAll
as well, either providing your own implementation, or delegating to the provided standardAddAll
method.
Each of the standard
methods uses the set’s comparator (or the natural ordering of the elements, if there is no comparator) to test element equality. As a result, if the comparator is not consistent with equals, some of the standard implementations may violate the Set
contract.
The standard
methods and the collection views they return are not guaranteed to be thread-safe, even when all of the methods that they depend on are thread-safe.
Modifier and Type | Class and Description |
---|---|
protected class |
ForwardingNavigableSet.StandardDescendingSet
A sensible implementation of
NavigableSet.descendingSet() in terms of the other methods of NavigableSet , notably including NavigableSet.descendingIterator() . |
Modifier | Constructor and Description |
---|---|
protected |
ForwardingNavigableSet()
Constructor for use by subclasses.
|
Modifier and Type | Method and Description |
---|---|
E |
ceiling(E e) |
protected abstract NavigableSet<E> |
delegate()
Returns the backing delegate instance that methods are forwarded to.
|
Iterator<E> |
descendingIterator() |
NavigableSet<E> |
descendingSet() |
E |
floor(E e) |
NavigableSet<E> |
headSet(E toElement,
boolean inclusive) |
E |
higher(E e) |
E |
lower(E e) |
E |
pollFirst() |
E |
pollLast() |
protected E |
standardCeiling(E e)
|
protected E |
standardFirst() |
protected E |
standardFloor(E e)
A sensible definition of
floor(E) in terms of the descendingIterator method of headSet(Object, boolean) . |
protected SortedSet<E> |
standardHeadSet(E toElement)
A sensible definition of
ForwardingSortedSet.headSet(Object) in terms of the headSet(Object, boolean) method. |
protected E |
standardHigher(E e)
|
protected E |
standardLast() |
protected E |
standardLower(E e)
A sensible definition of
lower(E) in terms of the descendingIterator method of headSet(Object, boolean) . |
protected E |
standardPollFirst()
A sensible definition of
pollFirst() in terms of the iterator method. |
protected E |
standardPollLast()
A sensible definition of
pollLast() in terms of the descendingIterator method. |
protected NavigableSet<E> |
standardSubSet(E fromElement,
boolean fromInclusive,
E toElement,
boolean toInclusive)
A sensible definition of
subSet(Object, boolean, Object, boolean) in terms of the headSet and tailSet methods. |
protected SortedSet<E> |
standardSubSet(E fromElement,
E toElement)
A sensible definition of
ForwardingSortedSet.subSet(Object, Object) in terms of the subSet(Object, boolean, Object, boolean) method. |
protected SortedSet<E> |
standardTailSet(E fromElement)
A sensible definition of
ForwardingSortedSet.tailSet(Object) in terms of the tailSet(Object, boolean) method. |
NavigableSet<E> |
subSet(E fromElement,
boolean fromInclusive,
E toElement,
boolean toInclusive) |
NavigableSet<E> |
tailSet(E fromElement,
boolean inclusive) |
comparator, first, headSet, last, standardContains, standardRemove, subSet, tailSet
equals, hashCode, standardEquals, standardHashCode, standardRemoveAll
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, removeAll, retainAll, size, standardAddAll, standardClear, standardContainsAll, standardIsEmpty, standardRetainAll, standardToArray, standardToArray, standardToString, toArray, toArray
toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
headSet, iterator, subSet, tailSet
comparator, first, last, spliterator
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, remove, removeAll, retainAll, size, toArray, toArray
parallelStream, removeIf, stream
protected ForwardingNavigableSet()
Constructor for use by subclasses.
protected abstract NavigableSet<E> delegate()
ForwardingObject
Returns the backing delegate instance that methods are forwarded to. Abstract subclasses generally override this method with an abstract method that has a more specific return type, such as ForwardingSet.delegate()
. Concrete subclasses override this method to supply the instance being decorated.
delegate
in class ForwardingSortedSet<E>
public E lower(E e)
lower
in interface NavigableSet<E>
protected E standardLower(E e)
A sensible definition of lower(E)
in terms of the descendingIterator
method of headSet(Object, boolean)
. If you override headSet(Object, boolean)
, you may wish to override lower(E)
to forward to this implementation.
public E floor(E e)
floor
in interface NavigableSet<E>
protected E standardFloor(E e)
A sensible definition of floor(E)
in terms of the descendingIterator
method of headSet(Object, boolean)
. If you override headSet(Object, boolean)
, you may wish to override floor(E)
to forward to this implementation.
public E ceiling(E e)
ceiling
in interface NavigableSet<E>
protected E standardCeiling(E e)
A sensible definition of ceiling(E)
in terms of the iterator
method of tailSet(Object, boolean)
. If you override tailSet(Object, boolean)
, you may wish to override ceiling(E)
to forward to this implementation.
public E higher(E e)
higher
in interface NavigableSet<E>
protected E standardHigher(E e)
A sensible definition of higher(E)
in terms of the iterator
method of tailSet(Object, boolean)
. If you override tailSet(Object, boolean)
, you may wish to override higher(E)
to forward to this implementation.
public E pollFirst()
pollFirst
in interface NavigableSet<E>
protected E standardPollFirst()
A sensible definition of pollFirst()
in terms of the iterator
method. If you override ForwardingCollection.iterator()
you may wish to override pollFirst()
to forward to this implementation.
public E pollLast()
pollLast
in interface NavigableSet<E>
protected E standardPollLast()
A sensible definition of pollLast()
in terms of the descendingIterator
method. If you override descendingIterator()
you may wish to override pollLast()
to forward to this implementation.
protected E standardFirst()
protected E standardLast()
public NavigableSet<E> descendingSet()
descendingSet
in interface NavigableSet<E>
public Iterator<E> descendingIterator()
descendingIterator
in interface NavigableSet<E>
public NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
subSet
in interface NavigableSet<E>
@Beta protected NavigableSet<E> standardSubSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
A sensible definition of subSet(Object, boolean, Object, boolean)
in terms of the headSet
and tailSet
methods. In many cases, you may wish to override subSet(Object, boolean, Object, boolean)
to forward to this implementation.
protected SortedSet<E> standardSubSet(E fromElement, E toElement)
A sensible definition of ForwardingSortedSet.subSet(Object, Object)
in terms of the subSet(Object, boolean, Object, boolean)
method. If you override subSet(Object, boolean, Object, boolean)
, you may wish to override ForwardingSortedSet.subSet(Object, Object)
to forward to this implementation.
standardSubSet
in class ForwardingSortedSet<E>
public NavigableSet<E> headSet(E toElement, boolean inclusive)
headSet
in interface NavigableSet<E>
protected SortedSet<E> standardHeadSet(E toElement)
A sensible definition of ForwardingSortedSet.headSet(Object)
in terms of the headSet(Object, boolean)
method. If you override headSet(Object, boolean)
, you may wish to override ForwardingSortedSet.headSet(Object)
to forward to this implementation.
public NavigableSet<E> tailSet(E fromElement, boolean inclusive)
tailSet
in interface NavigableSet<E>
protected SortedSet<E> standardTailSet(E fromElement)
A sensible definition of ForwardingSortedSet.tailSet(Object)
in terms of the tailSet(Object, boolean)
method. If you override tailSet(Object, boolean)
, you may wish to override ForwardingSortedSet.tailSet(Object)
to forward to this implementation.