com.google.common.collect
Class ForwardingNavigableSet<E>

java.lang.Object
  extended by com.google.common.collect.ForwardingObject
      extended by com.google.common.collect.ForwardingCollection<E>
          extended by com.google.common.collect.ForwardingSet<E>
              extended by com.google.common.collect.ForwardingSortedSet<E>
                  extended by com.google.common.collect.ForwardingNavigableSet<E>
All Implemented Interfaces:
Iterable<E>, Collection<E>, NavigableSet<E>, Set<E>, SortedSet<E>
Direct Known Subclasses:
ForwardingNavigableSet.StandardDescendingSet

@Beta
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), 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.

Since:
12.0
Author:
Louis Wasserman

Nested Class Summary
protected  class ForwardingNavigableSet.StandardDescendingSet
          A sensible implementation of NavigableSet.descendingSet() in terms of the other methods of NavigableSet, notably including NavigableSet.descendingIterator().
 
Constructor Summary
protected ForwardingNavigableSet()
          Constructor for use by subclasses.
 
Method Summary
 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)
          A sensible definition of ceiling(E) in terms of the iterator method of tailSet(Object, boolean).
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)
          A sensible definition of higher(E) in terms of the iterator method of tailSet(Object, boolean).
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)
           
 
Methods inherited from class com.google.common.collect.ForwardingSortedSet
comparator, first, headSet, last, standardContains, standardRemove, subSet, tailSet
 
Methods inherited from class com.google.common.collect.ForwardingSet
equals, hashCode, standardEquals, standardHashCode, standardRemoveAll
 
Methods inherited from class com.google.common.collect.ForwardingCollection
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, removeAll, retainAll, size, standardAddAll, standardClear, standardContainsAll, standardIsEmpty, standardRetainAll, standardToArray, standardToArray, standardToString, toArray, toArray
 
Methods inherited from class com.google.common.collect.ForwardingObject
toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.NavigableSet
headSet, iterator, subSet, tailSet
 
Methods inherited from interface java.util.SortedSet
comparator, first, last
 
Methods inherited from interface java.util.Set
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, remove, removeAll, retainAll, size, toArray, toArray
 

Constructor Detail

ForwardingNavigableSet

protected ForwardingNavigableSet()
Constructor for use by subclasses.

Method Detail

delegate

protected abstract NavigableSet<E> delegate()
Description copied from class: 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.

Specified by:
delegate in class ForwardingSortedSet<E>

lower

public E lower(E e)
Specified by:
lower in interface NavigableSet<E>

standardLower

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.


floor

public E floor(E e)
Specified by:
floor in interface NavigableSet<E>

standardFloor

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.


ceiling

public E ceiling(E e)
Specified by:
ceiling in interface NavigableSet<E>

standardCeiling

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.


higher

public E higher(E e)
Specified by:
higher in interface NavigableSet<E>

standardHigher

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.


pollFirst

public E pollFirst()
Specified by:
pollFirst in interface NavigableSet<E>

standardPollFirst

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.


pollLast

public E pollLast()
Specified by:
pollLast in interface NavigableSet<E>

standardPollLast

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.


standardFirst

protected E standardFirst()

standardLast

protected E standardLast()

descendingSet

public NavigableSet<E> descendingSet()
Specified by:
descendingSet in interface NavigableSet<E>

descendingIterator

public Iterator<E> descendingIterator()
Specified by:
descendingIterator in interface NavigableSet<E>

subSet

public NavigableSet<E> subSet(E fromElement,
                              boolean fromInclusive,
                              E toElement,
                              boolean toInclusive)
Specified by:
subSet in interface NavigableSet<E>

standardSubSet

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.


standardSubSet

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.

Overrides:
standardSubSet in class ForwardingSortedSet<E>

headSet

public NavigableSet<E> headSet(E toElement,
                               boolean inclusive)
Specified by:
headSet in interface NavigableSet<E>

standardHeadSet

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.


tailSet

public NavigableSet<E> tailSet(E fromElement,
                               boolean inclusive)
Specified by:
tailSet in interface NavigableSet<E>

standardTailSet

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.



Copyright © 2010-2012. All Rights Reserved.