ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/NavigableSet.java
(Generate patch)

Comparing jsr166/src/main/java/util/NavigableSet.java (file contents):
Revision 1.5 by jsr166, Mon May 2 08:35:49 2005 UTC vs.
Revision 1.14 by jsr166, Tue Feb 7 20:54:24 2006 UTC

# Line 9 | Line 9 | package java.util;
9   /**
10   * A {@link SortedSet} extended with navigation methods reporting
11   * closest matches for given search targets. Methods <tt>lower</tt>,
12 < * <tt>floor</tt>, <tt>ceiling</tt>, and <tt>higher</tt> return keys
12 > * <tt>floor</tt>, <tt>ceiling</tt>, and <tt>higher</tt> return elements
13   * respectively less than, less than or equal, greater than or equal,
14 < * and greater than a given key, returning <tt>null</tt> if there is
15 < * no such key.  A <tt>NavigableSet</tt> may be viewed and traversed
14 > * and greater than a given element, returning <tt>null</tt> if there is
15 > * no such element.  A <tt>NavigableSet</tt> may be viewed and traversed
16   * in either ascending or descending order.  The <tt>Collection</tt>
17   * <tt>iterator</tt> method returns an ascending <tt>Iterator</tt> and
18 < * the additional method <tt>descendingIterator</tt> returns
18 > * the additional method <tt>descendingIterator</tt> returns a
19   * descending iterator. The performance of ascending traversals is
20   * likely to be faster than descending traversals.  This interface
21   * additionally defines methods <tt>pollFirst</tt> and
22 < * <t>pollLast</tt> that return and remove the lowest and highest key,
23 < * if one exists, else returning <tt>null</tt>.
22 > * <tt>pollLast</tt> that return and remove the lowest and highest
23 > * element, if one exists, else returning <tt>null</tt>.
24   * Methods <tt>navigableSubSet</tt>, <tt>navigableHeadSet</tt>, and
25   * <tt>navigableTailSet</tt> differ from the similarly named
26 < * <tt>SortedSet</tt> methods only in that the returned sets
27 < * are guaranteed to obey the <tt>NavigableSet</tt> interface.
26 > * <tt>SortedSet</tt> methods only in their declared return types.
27 > * Subsets of any <tt>NavigableSet</tt> must implement the
28 > * <tt>NavigableSet</tt> interface.
29   *
30   * <p> The return values of navigation methods may be ambiguous in
31   * implementations that permit <tt>null</tt> elements. However, even
32   * in this case the result can be disambiguated by checking
33   * <tt>contains(null)</tt>. To avoid such issues, implementations of
34 < * this interface are encouraged <em>not</em> to permit insertion of
34 > * this interface are encouraged to <em>not</em> permit insertion of
35   * <tt>null</tt> elements. (Note that sorted sets of {@link
36   * Comparable} elements intrinsically do not permit <tt>null</tt>.)
37   *
38 + * <p>This interface is a member of the
39 + * <a href="{@docRoot}/../guide/collections/index.html">
40 + * Java Collections Framework</a>.
41 + *
42   * @author Doug Lea
43   * @param <E> the type of elements maintained by this set
44 + * @since 1.6
45   */
46   public interface NavigableSet<E> extends SortedSet<E> {
47      /**
48 <     * Returns an element greater than or equal to the given element, or
49 <     * <tt>null</tt> if there is no such element.
50 <     *
48 >     * Returns the greatest element in this set strictly less than the
49 >     * given element, or <tt>null</tt> if there is no such element.
50 >     *
51       * @param e the value to match
52 <     * @return an element greater than or equal to given element, or
53 <     * <tt>null</tt> if there is no such element.
54 <     * @throws ClassCastException if e cannot be compared with the elements
55 <     *            currently in the set.
56 <     * @throws NullPointerException if e is <tt>null</tt>
57 <     * and this set does not permit <tt>null</tt> elements
52 >     * @return the greatest element less than <tt>e</tt>,
53 >     *         or <tt>null</tt> if there is no such element
54 >     * @throws ClassCastException if the specified element cannot be
55 >     *         compared with the elements currently in the set
56 >     * @throws NullPointerException if the specified element is null
57 >     *         and this set does not permit null elements
58       */
59 <    E ceiling(E e);
59 >    E lower(E e);
60  
61      /**
62 <     * Returns an element strictly less than the given element, or
63 <     * <tt>null</tt> if there is no such element.
64 <     *
62 >     * Returns the greatest element in this set less than or equal to
63 >     * the given element, or <tt>null</tt> if there is no such element.
64 >     *
65       * @param e the value to match
66 <     * @return the greatest element less than the given element, or
67 <     * <tt>null</tt> if there is no such element.
68 <     * @throws ClassCastException if e cannot be compared with the elements
69 <     *            currently in the set.
70 <     * @throws NullPointerException if e is <tt>null</tt>
71 <     * and this set does not permit <tt>null</tt> elements
66 >     * @return the greatest element less than or equal to <tt>e</tt>,
67 >     *         or <tt>null</tt> if there is no such element
68 >     * @throws ClassCastException if the specified element cannot be
69 >     *         compared with the elements currently in the set
70 >     * @throws NullPointerException if the specified element is null
71 >     *         and this set does not permit null elements
72       */
73 <    E lower(E e);
73 >    E floor(E e);
74  
75      /**
76 <     * Returns an element less than or equal to the given element, or
77 <     * <tt>null</tt> if there is no such element.
78 <     *
76 >     * Returns the least element in this set greater than or equal to
77 >     * the given element, or <tt>null</tt> if there is no such element.
78 >     *
79       * @param e the value to match
80 <     * @return the greatest element less than or equal to given
81 <     * element, or <tt>null</tt> if there is no such element.
82 <     * @throws ClassCastException if e cannot be compared with the elements
83 <     *            currently in the set.
84 <     * @throws NullPointerException if e is <tt>null</tt>.
85 <     * and this set does not permit <tt>null</tt> elements
80 >     * @return the least element greater than or equal to <tt>e</tt>,
81 >     *         or <tt>null</tt> if there is no such element
82 >     * @throws ClassCastException if the specified element cannot be
83 >     *         compared with the elements currently in the set
84 >     * @throws NullPointerException if the specified element is null
85 >     *         and this set does not permit null elements
86       */
87 <    E floor(E e);
87 >    E ceiling(E e);
88  
89      /**
90 <     * Returns an element strictly greater than the given element, or
91 <     * <tt>null</tt> if there is no such element.
92 <     *
90 >     * Returns the least element in this set strictly greater than the
91 >     * given element, or <tt>null</tt> if there is no such element.
92 >     *
93       * @param e the value to match
94 <     * @return the least element greater than the given element, or
95 <     * <tt>null</tt> if there is no such element.
96 <     * @throws ClassCastException if e cannot be compared with the elements
97 <     *            currently in the set.
98 <     * @throws NullPointerException if e is <tt>null</tt>
99 <     * and this set does not permit <tt>null</tt> elements
94 >     * @return the least element greater than <tt>e</tt>,
95 >     *         or <tt>null</tt> if there is no such element
96 >     * @throws ClassCastException if the specified element cannot be
97 >     *         compared with the elements currently in the set
98 >     * @throws NullPointerException if the specified element is null
99 >     *         and this set does not permit null elements
100       */
101      E higher(E e);
102  
103      /**
104 <     * Retrieves and removes the first (lowest) element.
104 >     * Retrieves and removes the first (lowest) element,
105 >     * or returns <tt>null</tt> if this set is empty.
106       *
107 <     * @return the first element, or <tt>null</tt> if empty.
107 >     * @return the first element, or <tt>null</tt> if this set is empty
108       */
109      E pollFirst();
110  
111      /**
112 <     * Retrieves and removes the last (highest) element.
112 >     * Retrieves and removes the last (highest) element,
113 >     * or returns <tt>null</tt> if this set is empty.
114       *
115 <     * @return the last element, or <tt>null</tt> if empty.
115 >     * @return the last element, or <tt>null</tt> if this set is empty
116       */
117      E pollLast();
118  
119      /**
120 <     * Returns an iterator over the elements in this collection, in
121 <     * descending order.  
122 <     *
123 <     * @return an <tt>Iterator</tt> over the elements in this collection
120 >     * Returns an iterator over the elements in this set, in ascending order.
121 >     *
122 >     * @return an iterator over the elements in this set, in ascending order
123 >     */
124 >    Iterator<E> iterator();
125 >
126 >    /**
127 >     * Returns an iterator over the elements in this set, in descending order.
128 >     *
129 >     * @return an iterator over the elements in this set, in descending order
130       */
131      Iterator<E> descendingIterator();
132  
# Line 120 | Line 134 | public interface NavigableSet<E> extends
134       * Returns a view of the portion of this set whose elements range
135       * from <tt>fromElement</tt>, inclusive, to <tt>toElement</tt>,
136       * exclusive.  (If <tt>fromElement</tt> and <tt>toElement</tt> are
137 <     * equal, the returned navigable set is empty.)  The returned
138 <     * navigable set is backed by this set, so changes in the returned
139 <     * navigable set are reflected in this set, and vice-versa.
137 >     * equal, the returned set is empty.)  The returned set is backed
138 >     * by this set, so changes in the returned set are reflected in
139 >     * this set, and vice-versa.  The returned set supports all
140 >     * optional set operations that this set supports.
141 >     *
142 >     * <p>The returned set will throw an <tt>IllegalArgumentException</tt>
143 >     * on an attempt to insert an element outside its range.
144       *
145 <     * @param fromElement low endpoint (inclusive) of the subSet.
146 <     * @param toElement high endpoint (exclusive) of the subSet.
145 >     * @param fromElement low endpoint (inclusive) of the returned set
146 >     * @param toElement high endpoint (exclusive) of the returned set
147       * @return a view of the portion of this set whose elements range from
148 <     *         <tt>fromElement</tt>, inclusive, to <tt>toElement</tt>,
131 <     *         exclusive.
148 >     *         <tt>fromElement</tt>, inclusive, to <tt>toElement</tt>, exclusive
149       * @throws ClassCastException if <tt>fromElement</tt> and
150 <     *         <tt>toElement</tt> cannot be compared to one another using
151 <     *         this set's comparator (or, if the set has no comparator,
152 <     *         using natural ordering).
153 <     * @throws IllegalArgumentException if <tt>fromElement</tt> is
154 <     * greater than <tt>toElement</tt>.
150 >     *         <tt>toElement</tt> cannot be compared to one another using this
151 >     *         set's comparator (or, if the set has no comparator, using
152 >     *         natural ordering).  Implementations may, but are not required
153 >     *         to, throw this exception if <tt>fromElement</tt> or
154 >     *         <tt>toElement</tt> cannot be compared to elements currently in
155 >     *         the set.
156       * @throws NullPointerException if <tt>fromElement</tt> or
157 <     *         <tt>toElement</tt> is <tt>null</tt>
158 <     * and this set does not permit <tt>null</tt> elements
157 >     *         <tt>toElement</tt> is null and this set does
158 >     *         not permit null elements
159 >     * @throws IllegalArgumentException if <tt>fromElement</tt> is
160 >     *         greater than <tt>toElement</tt>; or if this set itself
161 >     *         has a restricted range, and <tt>fromElement</tt> or
162 >     *         <tt>toElement</tt> lies outside the bounds of the range.
163       */
164      NavigableSet<E> navigableSubSet(E fromElement, E toElement);
165  
166      /**
167       * Returns a view of the portion of this set whose elements are
168 <     * strictly less than <tt>toElement</tt>.  The returned navigable
169 <     * set is backed by this set, so changes in the returned navigable
170 <     * set are reflected in this set, and vice-versa.
171 <     * @param toElement high endpoint (exclusive) of the headSet.
168 >     * strictly less than <tt>toElement</tt>.  The returned set is
169 >     * backed by this set, so changes in the returned set are
170 >     * reflected in this set, and vice-versa.  The returned set
171 >     * supports all optional set operations that this set supports.
172 >     *
173 >     * <p>The returned set will throw an <tt>IllegalArgumentException</tt>
174 >     * on an attempt to insert an element outside its range.
175 >     *
176 >     * @param toElement high endpoint (exclusive) of the returned set
177       * @return a view of the portion of this set whose elements are strictly
178 <     *         less than toElement.
178 >     *         less than <tt>toElement</tt>
179       * @throws ClassCastException if <tt>toElement</tt> is not compatible
180       *         with this set's comparator (or, if the set has no comparator,
181 <     *         if <tt>toElement</tt> does not implement <tt>Comparable</tt>).
182 <     * @throws NullPointerException if <tt>toElement</tt> is <tt>null</tt>
183 <     * and this set does not permit <tt>null</tt> elements
181 >     *         if <tt>toElement</tt> does not implement {@link Comparable}).
182 >     *         Implementations may, but are not required to, throw this
183 >     *         exception if <tt>toElement</tt> cannot be compared to elements
184 >     *         currently in the set.
185 >     * @throws NullPointerException if <tt>toElement</tt> is null and
186 >     *         this set does not permit null elements
187 >     * @throws IllegalArgumentException if this set itself has a
188 >     *         restricted range, and <tt>toElement</tt> lies outside the
189 >     *         bounds of the range
190       */
191      NavigableSet<E> navigableHeadSet(E toElement);
192  
193      /**
194       * Returns a view of the portion of this set whose elements are
195       * greater than or equal to <tt>fromElement</tt>.  The returned
196 <     * navigable set is backed by this set, so changes in the returned
197 <     * navigable set are reflected in this set, and vice-versa.
198 <     * @param fromElement low endpoint (inclusive) of the tailSet.
199 <     * @return a view of the portion of this set whose elements are
200 <     * greater than or equal to <tt>fromElement</tt>.
201 <     * @throws ClassCastException if <tt>fromElement</tt> is not
202 <     * compatible with this set's comparator (or, if the set has no
203 <     * comparator, if <tt>fromElement</tt> does not implement
204 <     * <tt>Comparable</tt>).
205 <     * @throws NullPointerException if <tt>fromElement</tt> is <tt>null</tt>
206 <     * and this set does not permit <tt>null</tt> elements
196 >     * set is backed by this set, so changes in the returned set are
197 >     * reflected in this set, and vice-versa.  The returned set
198 >     * supports all optional set operations that this set supports.
199 >     *
200 >     * <p>The returned set will throw an <tt>IllegalArgumentException</tt>
201 >     * on an attempt to insert an element outside its range.
202 >     *
203 >     * @param fromElement low endpoint (inclusive) of the returned set
204 >     * @return a view of the portion of this set whose elements are greater
205 >     *         than or equal to <tt>fromElement</tt>
206 >     * @throws ClassCastException if <tt>fromElement</tt> is not compatible
207 >     *         with this set's comparator (or, if the set has no comparator,
208 >     *         if <tt>fromElement</tt> does not implement {@link Comparable}).
209 >     *         Implementations may, but are not required to, throw this
210 >     *         exception if <tt>fromElement</tt> cannot be compared to elements
211 >     *         currently in the set.
212 >     * @throws NullPointerException if <tt>fromElement</tt> is null
213 >     *         and this set does not permit null elements
214 >     * @throws IllegalArgumentException if this set itself has a
215 >     *         restricted range, and <tt>fromElement</tt> lies outside the
216 >     *         bounds of the range
217       */
218      NavigableSet<E> navigableTailSet(E fromElement);
219   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines