/* * @(#)SortedSet.java 1.24 04/06/28 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.util; /** * A set that further guarantees that its iterator will traverse the set in * ascending element order, sorted according to the natural ordering of * its elements (see Comparable), or by a Comparator provided at sorted set * creation time. Several additional operations are provided to take * advantage of the ordering. (This interface is the set analogue of * SortedMap.)
* * All elements inserted into an sorted set must implement the Comparable * interface (or be accepted by the specified Comparator). Furthermore, all * such elements must be mutually comparable: e1.compareTo(e2) * (or comparator.compare(e1, e2)) must not throw a * ClassCastException for any elements e1 and e2 in * the sorted set. Attempts to violate this restriction will cause the * offending method or constructor invocation to throw a * ClassCastException.
* * Note that the ordering maintained by a sorted set (whether or not an * explicit comparator is provided) must be consistent with equals if * the sorted set is to correctly implement the Set interface. (See * the Comparable interface or Comparator interface for a * precise definition of consistent with equals.) This is so because * the Set interface is defined in terms of the equals * operation, but a sorted set performs all element comparisons using its * compareTo (or compare) method, so two elements that are * deemed equal by this method are, from the standpoint of the sorted set, * equal. The behavior of a sorted set is well-defined even if its * ordering is inconsistent with equals; it just fails to obey the general * contract of the Set interface.
* * All general-purpose sorted set implementation classes should provide four * "standard" constructors: 1) A void (no arguments) constructor, which * creates an empty sorted set sorted according to the natural order of * its elements. 2) A constructor with a single argument of type * Comparator, which creates an empty sorted set sorted according to * the specified comparator. 3) A constructor with a single argument of type * Collection, which creates a new sorted set with the same elements * as its argument, sorted according to the elements' natural ordering. 4) A * constructor with a single argument of type SortedSet, which * creates a new sorted set with the same elements and the same ordering as * the input sorted set. There is no way to enforce this recommendation (as * interfaces cannot contain constructors) but the JDK implementation (the * TreeSet class) complies.
*
* This interface is a member of the
*
* Java Collections Framework.
*
* @author Josh Bloch
* @version 1.24, 06/28/04
* @see Set
* @see TreeSet
* @see SortedMap
* @see Collection
* @see Comparable
* @see Comparator
* @see java.lang.ClassCastException
* @since 1.2
*/
public interface SortedSet
*
* The sorted set returned by this method will throw an
* IllegalArgumentException if the user attempts to insert a
* element outside the specified range.
*
* Note: this method always returns a half-open range (which
* includes its low endpoint but not its high endpoint). If you need a
* closed range (which includes both endpoints), and the element
* type allows for calculation of the successor a given value, merely
* request the subrange from lowEndpoint to
* successor(highEndpoint). For example, suppose that s
* is a sorted set of strings. The following idiom obtains a view
* containing all of the strings in s from low to
* high, inclusive:
*
* The sorted set returned by this method will throw an
* IllegalArgumentException if the user attempts to insert a
* element outside the specified range.
*
* Note: this method always returns a view that does not contain its
* (high) endpoint. If you need a view that does contain this endpoint,
* and the element type allows for calculation of the successor a given
* value, merely request a headSet bounded by
* successor(highEndpoint). For example, suppose that s
* is a sorted set of strings. The following idiom obtains a view
* containing all of the strings in s that are less than or equal
* to high:
*
*
* The sorted set returned by this method will throw an
* IllegalArgumentException if the user attempts to insert a
* element outside the specified range.
*
* Note: this method always returns a view that contains its (low)
* endpoint. If you need a view that does not contain this endpoint, and
* the element type allows for calculation of the successor a given value,
* merely request a tailSet bounded by successor(lowEndpoint).
* For example, suppose that s is a sorted set of strings. The
* following idiom obtains a view containing all of the strings in
* s that are strictly greater than low:
*
*
* SortedSet sub = s.subSet(low, high+"\0");
*
*
* A similar technique can be used to generate an open range (which
* contains neither endpoint). The following idiom obtains a view
* containing all of the Strings in s from low to
* high, exclusive:
* SortedSet sub = s.subSet(low+"\0", high);
*
*
* @param fromElement low endpoint (inclusive) of the subSet.
* @param toElement high endpoint (exclusive) of the subSet.
* @return a view of the specified range within this sorted set.
*
* @throws ClassCastException if fromElement and
* toElement cannot be compared to one another using this
* set's comparator (or, if the set has no comparator, using
* natural ordering). Implementations may, but are not required
* to, throw this exception if fromElement or
* toElement cannot be compared to elements currently in
* the set.
* @throws IllegalArgumentException if fromElement is greater than
* toElement; or if this set is itself a subSet, headSet,
* or tailSet, and fromElement or toElement are
* not within the specified range of the subSet, headSet, or
* tailSet.
* @throws NullPointerException if fromElement or
* toElement is null and this sorted set does
* not tolerate null elements.
*/
SortedSet SortedSet head = s.headSet(high+"\0");
*
* @param toElement high endpoint (exclusive) of the headSet.
* @return a view of the specified initial range of this sorted set.
* @throws ClassCastException if toElement is not compatible
* with this set's comparator (or, if the set has no comparator,
* if toElement does not implement Comparable).
* Implementations may, but are not required to, throw this
* exception if toElement cannot be compared to elements
* currently in the set.
* @throws NullPointerException if toElement is null and
* this sorted set does not tolerate null elements.
* @throws IllegalArgumentException if this set is itself a subSet,
* headSet, or tailSet, and toElement is not within the
* specified range of the subSet, headSet, or tailSet.
*/
SortedSet SortedSet tail = s.tailSet(low+"\0");
*
* @param fromElement low endpoint (inclusive) of the tailSet.
* @return a view of the specified final range of this sorted set.
* @throws ClassCastException if fromElement is not compatible
* with this set's comparator (or, if the set has no comparator,
* if fromElement does not implement Comparable).
* Implementations may, but are not required to, throw this
* exception if fromElement cannot be compared to elements
* currently in the set.
* @throws NullPointerException if fromElement is null
* and this sorted set does not tolerate null elements.
* @throws IllegalArgumentException if this set is itself a subSet,
* headSet, or tailSet, and fromElement is not within the
* specified range of the subSet, headSet, or tailSet.
*/
SortedSet