ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/jsr166x/NavigableSet.java
Revision: 1.6
Committed: Tue Mar 15 19:47:02 2011 UTC (13 years, 2 months ago) by jsr166
Branch: MAIN
CVS Tags: jdk7-compat, release-1_7_0
Changes since 1.5: +1 -1 lines
Log Message:
Update Creative Commons license URL in legal notices

File Contents

# Content
1 /*
2 * Written by Doug Lea with assistance from members of JCP JSR-166
3 * Expert Group and released to the public domain, as explained at
4 * http://creativecommons.org/publicdomain/zero/1.0/
5 */
6
7 package jsr166x;
8 import java.util.*;
9
10 /**
11 * A {@link SortedSet} extended with navigation methods reporting
12 * closest matches for given search targets. Methods <tt>lower</tt>,
13 * <tt>floor</tt>, <tt>ceiling</tt>, and <tt>higher</tt> return keys
14 * respectively less than, less than or equal, greater than or equal,
15 * and greater than a given key, returning <tt>null</tt> if there is
16 * no such key. A <tt>NavigableSet</tt> may be viewed and traversed
17 * in either ascending or descending order. The <tt>Collection</tt>
18 * <tt>iterator</tt> method returns an ascending <tt>Iterator</tt> and
19 * the additional method <tt>descendingIterator</tt> returns
20 * descending iterator. The performance of ascending traversals is
21 * likely to be faster than descending traversals. This interface
22 * additionally defines methods <tt>pollFirst</tt> and
23 * <t>pollLast</tt> that return and remove the lowest and highest key,
24 * if one exists, else returning <tt>null</tt>.
25 *
26 * <p> The return values of navigation methods may be ambiguous in
27 * implementations that permit <tt>null</tt> elements. However, even
28 * in this case the result can be disambiguated by checking
29 * <tt>contains(null)</tt>. To avoid such issues, implementations of
30 * this interface are encouraged <em>not</em> to permit insertion of
31 * <tt>null</tt> elements. (Note that sorted sets of {@link
32 * Comparable} elements intrinsically do not permit <tt>null</tt>.)
33 *
34 * @author Doug Lea
35 * @param <E> the type of elements maintained by this set
36 */
37 public interface NavigableSet<E> extends SortedSet<E> {
38 /**
39 * Returns an element greater than or equal to the given element, or
40 * <tt>null</tt> if there is no such element.
41 *
42 * @param o the value to match
43 * @return an element greater than or equal to given element, or
44 * <tt>null</tt> if there is no such element.
45 * @throws ClassCastException if o cannot be compared with the elements
46 * currently in the set.
47 * @throws NullPointerException if o is <tt>null</tt>
48 * and this set deas not permit <tt>null</tt> elements
49 */
50 public E ceiling(E o);
51
52 /**
53 * Returns an element strictly less than the given element, or
54 * <tt>null</tt> if there is no such element.
55 *
56 * @param o the value to match
57 * @return the greatest element less than the given element, or
58 * <tt>null</tt> if there is no such element.
59 * @throws ClassCastException if o cannot be compared with the elements
60 * currently in the set.
61 * @throws NullPointerException if o is <tt>null</tt>
62 * and this set deas not permit <tt>null</tt> elements
63 */
64 public E lower(E o);
65
66 /**
67 * Returns an element less than or equal to the given element, or
68 * <tt>null</tt> if there is no such element.
69 *
70 * @param o the value to match
71 * @return the greatest element less than or equal to given
72 * element, or <tt>null</tt> if there is no such element.
73 * @throws ClassCastException if o cannot be compared with the elements
74 * currently in the set.
75 * @throws NullPointerException if o is <tt>null</tt>.
76 * and this set deas not permit <tt>null</tt> elements
77 */
78 public E floor(E o);
79
80 /**
81 * Returns an element strictly greater than the given element, or
82 * <tt>null</tt> if there is no such element.
83 *
84 * @param o the value to match
85 * @return the least element greater than the given element, or
86 * <tt>null</tt> if there is no such element.
87 * @throws ClassCastException if o cannot be compared with the elements
88 * currently in the set.
89 * @throws NullPointerException if o is <tt>null</tt>
90 * and this set deas not permit <tt>null</tt> elements
91 */
92 public E higher(E o);
93
94 /**
95 * Retrieves and removes the first (lowest) element.
96 *
97 * @return the first element, or <tt>null</tt> if empty.
98 */
99 public E pollFirst();
100
101 /**
102 * Retrieves and removes the last (highest) element.
103 *
104 * @return the last element, or <tt>null</tt> if empty.
105 */
106 public E pollLast();
107
108 /**
109 * Returns an iterator over the elements in this collection, in
110 * descending order.
111 *
112 * @return an <tt>Iterator</tt> over the elements in this collection
113 */
114 Iterator<E> descendingIterator();
115
116 /**
117 * Returns a view of the portion of this set whose elements range from
118 * <tt>fromElement</tt>, inclusive, to <tt>toElement</tt>, exclusive. (If
119 * <tt>fromElement</tt> and <tt>toElement</tt> are equal, the returned
120 * sorted set is empty.) The returned sorted set is backed by this set,
121 * so changes in the returned sorted set are reflected in this set, and
122 * vice-versa.
123 * @param fromElement low endpoint (inclusive) of the subSet.
124 * @param toElement high endpoint (exclusive) of the subSet.
125 * @return a view of the portion of this set whose elements range from
126 * <tt>fromElement</tt>, inclusive, to <tt>toElement</tt>,
127 * exclusive.
128 * @throws ClassCastException if <tt>fromElement</tt> and
129 * <tt>toElement</tt> cannot be compared to one another using
130 * this set's comparator (or, if the set has no comparator,
131 * using natural ordering).
132 * @throws IllegalArgumentException if <tt>fromElement</tt> is
133 * greater than <tt>toElement</tt>.
134 * @throws NullPointerException if <tt>fromElement</tt> or
135 * <tt>toElement</tt> is <tt>null</tt>
136 * and this set deas not permit <tt>null</tt> elements
137 */
138 public NavigableSet<E> subSet(E fromElement, E toElement);
139
140 /**
141 * Returns a view of the portion of this set whose elements are strictly
142 * less than <tt>toElement</tt>. The returned sorted set is backed by
143 * this set, so changes in the returned sorted set are reflected in this
144 * set, and vice-versa.
145 * @param toElement high endpoint (exclusive) of the headSet.
146 * @return a view of the portion of this set whose elements are strictly
147 * less than toElement.
148 * @throws ClassCastException if <tt>toElement</tt> is not compatible
149 * with this set's comparator (or, if the set has no comparator,
150 * if <tt>toElement</tt> does not implement <tt>Comparable</tt>).
151 * @throws NullPointerException if <tt>toElement</tt> is <tt>null</tt>
152 * and this set deas not permit <tt>null</tt> elements
153 */
154 public NavigableSet<E> headSet(E toElement);
155
156 /**
157 * Returns a view of the portion of this set whose elements are
158 * greater than or equal to <tt>fromElement</tt>. The returned
159 * sorted set is backed by this set, so changes in the returned
160 * sorted set are reflected in this set, and vice-versa.
161 * @param fromElement low endpoint (inclusive) of the tailSet.
162 * @return a view of the portion of this set whose elements are
163 * greater than or equal to <tt>fromElement</tt>.
164 * @throws ClassCastException if <tt>fromElement</tt> is not
165 * compatible with this set's comparator (or, if the set has no
166 * comparator, if <tt>fromElement</tt> does not implement
167 * <tt>Comparable</tt>).
168 * @throws NullPointerException if <tt>fromElement</tt> is <tt>null</tt>
169 * and this set deas not permit <tt>null</tt> elements
170 */
171 public NavigableSet<E> tailSet(E fromElement);
172 }