--- jsr166/src/main/java/util/NavigableSet.java 2006/04/21 04:45:37 1.20
+++ jsr166/src/main/java/util/NavigableSet.java 2012/11/18 18:03:10 1.26
@@ -1,7 +1,7 @@
/*
* Written by Doug Lea and Josh Bloch with assistance from members of JCP
* JSR-166 Expert Group and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
+ * http://creativecommons.org/publicdomain/zero/1.0/
*/
package java.util;
@@ -27,7 +27,7 @@ package java.util;
* Subsets of any {@code NavigableSet} must implement the {@code
* NavigableSet} interface.
*
- *
The return values of navigation methods may be ambiguous in
+ *
The return values of navigation methods may be ambiguous in
* implementations that permit {@code null} elements. However, even
* in this case the result can be disambiguated by checking
* {@code contains(null)}. To avoid such issues, implementations of
@@ -35,8 +35,18 @@ package java.util;
* {@code null} elements. (Note that sorted sets of {@link
* Comparable} elements intrinsically do not permit {@code null}.)
*
+ *
Methods
+ * {@link #subSet(Object, Object) subSet(E, E)},
+ * {@link #headSet(Object) headSet(E)}, and
+ * {@link #tailSet(Object) tailSet(E)}
+ * are specified to return {@code SortedSet} to allow existing
+ * implementations of {@code SortedSet} to be compatibly retrofitted to
+ * implement {@code NavigableSet}, but extensions and implementations
+ * of this interface are encouraged to override these methods to return
+ * {@code NavigableSet}.
+ *
*
This interface is a member of the
- *
+ *
* Java Collections Framework.
*
* @author Doug Lea
@@ -125,21 +135,25 @@ public interface NavigableSet extends
Iterator iterator();
/**
- * Returns a {@link NavigableSet} view of the elements contained in this
- * set in descending order. The descending set is backed by this set, so
- * changes to the set are reflected in the descending set, and vice-versa.
- * If either set is modified while an iteration over the other set is in
- * progress (except through the iterator's own {@code remove} operation),
- * the results of the iteration are undefined.
+ * Returns a reverse order view of the elements contained in this set.
+ * The descending set is backed by this set, so changes to the set are
+ * reflected in the descending set, and vice-versa. If either set is
+ * modified while an iteration over either set is in progress (except
+ * through the iterator's own {@code remove} operation), the results of
+ * the iteration are undefined.
+ *
+ * The returned set has an ordering equivalent to
+ * {@link Collections#reverseOrder(Comparator) Collections.reverseOrder}(comparator()).
+ * The expression {@code s.descendingSet().descendingSet()} returns a
+ * view of {@code s} essentially equivalent to {@code s}.
*
- * @return a navigable set view of the elements contained in this set,
- * sorted in descending order
+ * @return a reverse order view of this set
*/
NavigableSet descendingSet();
/**
* Returns an iterator over the elements in this set, in descending order.
- * Equivalent in effect to descendingSet().iterator().
+ * Equivalent in effect to {@code descendingSet().iterator()}.
*
* @return an iterator over the elements in this set, in descending order
*/
@@ -158,11 +172,11 @@ public interface NavigableSet extends
* on an attempt to insert an element outside its range.
*
* @param fromElement low endpoint of the returned set
- * @param fromInclusive true if the low endpoint ({@code fromElement}) is
- * to be included in the returned view
+ * @param fromInclusive {@code true} if the low endpoint
+ * is to be included in the returned view
* @param toElement high endpoint of the returned set
- * @param toInclusive true if the high endpoint ({@code toElement}) is
- * to be included in the returned view
+ * @param toInclusive {@code true} if the high endpoint
+ * is to be included in the returned view
* @return a view of the portion of this set whose elements range from
* {@code fromElement}, inclusive, to {@code toElement}, exclusive
* @throws ClassCastException if {@code fromElement} and
@@ -194,8 +208,8 @@ public interface NavigableSet extends
* on an attempt to insert an element outside its range.
*
* @param toElement high endpoint of the returned set
- * @param inclusive true if the high endpoint ({@code toElement}) is
- * to be included in the returned view
+ * @param inclusive {@code true} if the high endpoint
+ * is to be included in the returned view
* @return a view of the portion of this set whose elements are less than
* (or equal to, if {@code inclusive} is true) {@code toElement}
* @throws ClassCastException if {@code toElement} is not compatible
@@ -223,8 +237,8 @@ public interface NavigableSet extends
* on an attempt to insert an element outside its range.
*
* @param fromElement low endpoint of the returned set
- * @param inclusive true if the low endpoint ({@code fromElement}) is
- * to be included in the returned view
+ * @param inclusive {@code true} if the low endpoint
+ * is to be included in the returned view
* @return a view of the portion of this set whose elements are greater
* than or equal to {@code fromElement}
* @throws ClassCastException if {@code fromElement} is not compatible
@@ -240,4 +254,37 @@ public interface NavigableSet extends
* bounds of the range
*/
NavigableSet tailSet(E fromElement, boolean inclusive);
+
+ /**
+ * {@inheritDoc}
+ *
+ * Equivalent to {@code subSet(fromElement, true, toElement, false)}.
+ *
+ * @throws ClassCastException {@inheritDoc}
+ * @throws NullPointerException {@inheritDoc}
+ * @throws IllegalArgumentException {@inheritDoc}
+ */
+ SortedSet subSet(E fromElement, E toElement);
+
+ /**
+ * {@inheritDoc}
+ *
+ * Equivalent to {@code headSet(toElement, false)}.
+ *
+ * @throws ClassCastException {@inheritDoc}
+ * @throws NullPointerException {@inheritDoc}
+ * @throws IllegalArgumentException {@inheritDoc}
+na */
+ SortedSet headSet(E toElement);
+
+ /**
+ * {@inheritDoc}
+ *
+ * Equivalent to {@code tailSet(fromElement, true)}.
+ *
+ * @throws ClassCastException {@inheritDoc}
+ * @throws NullPointerException {@inheritDoc}
+ * @throws IllegalArgumentException {@inheritDoc}
+ */
+ SortedSet tailSet(E fromElement);
}