001 /*
002 * Copyright 2001-2010 Stephen Colebourne
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.joda.primitives.collection;
017
018 import org.joda.primitives.iterable.CharIterable;
019 import org.joda.primitives.iterator.CharIterator;
020
021 /**
022 * Defines a collection of primitive <code>char</code> values.
023 * <p>
024 * This interface extends {@link java.util.Collection Collection} allowing
025 * seamless integration with other APIs.
026 * All Collection methods can be used, using the primitive wrapper class {@link Character}.
027 * However, it will be <em>much</em> more efficient to use the methods defined here.
028 *
029 * @author Stephen Colebourne
030 * @author Jason Tiscione
031 * @version CODE GENERATED
032 * @since 1.0
033 */
034 public interface CharCollection extends PrimitiveCollection<Character>, CharIterable {
035 // This file is CODE GENERATED. Do not change manually.
036
037 // Mandatory operations
038 //-----------------------------------------------------------------------
039 /**
040 * Gets an iterator over this collection capable of accessing the primitive values.
041 *
042 * @return an iterator over this collection, not null
043 */
044 CharIterator iterator();
045 // This method is specified here, despite being in {@code CharIterable},
046 // due to compiler bug 6487370.
047
048 /**
049 * Checks whether this collection contains a specified primitive value.
050 *
051 * @param value the value to search for
052 * @return <code>true</code> if the value is found
053 */
054 boolean contains(char value);
055
056 /**
057 * Checks if this collection contains all of the values in the specified array.
058 * If the specified array is empty, <code>true</code> is returned.
059 *
060 * @param values the values to search for, null treated as empty array
061 * @return <code>true</code> if all of the values are found
062 */
063 boolean containsAll(char[] values);
064
065 /**
066 * Checks if this collection contains all of the values in the specified collection.
067 * If the specified collection is empty, <code>true</code> is returned.
068 *
069 * @param values the values to search for, null treated as empty collection
070 * @return <code>true</code> if all of the values are found
071 */
072 boolean containsAll(CharCollection values);
073
074 /**
075 * Checks if this collection contain all the values in the specified range.
076 * <p>
077 * The range is defined to be inclusive of the start and end.
078 * If the start is greater than the end then the result is <code>true</code>
079 * as the range is equivalent to an empty collection.
080 *
081 * @param startInclusive the inclusive range start value
082 * @param endInclusive the inclusive range end value
083 * @return <code>true</code> if the collection contains the entire range
084 */
085 boolean containsAll(char startInclusive, char endInclusive);
086
087 /**
088 * Checks if this collection contains any of the values in the specified array.
089 * If the specified array is empty, <code>false</code> is returned.
090 *
091 * @param values the values to search for, null treated as empty array
092 * @return <code>true</code> if at least one of the values is found
093 */
094 boolean containsAny(char[] values);
095
096 /**
097 * Checks if this collection contains any of the values in the specified collection.
098 * If the specified collection is empty, <code>false</code> is returned.
099 *
100 * @param coll the values to search for, null treated as empty collection
101 * @return <code>true</code> if at least one of the values is found
102 */
103 boolean containsAny(CharCollection coll);
104
105 /**
106 * Checks if this collection contain any of the values in the specified range.
107 * <p>
108 * The range is defined to be inclusive of the start and end.
109 * If the start is greater than the end then the result is <code>false</code>
110 * as the range is equivalent to an empty collection.
111 *
112 * @param startInclusive the inclusive range start value
113 * @param endInclusive the inclusive range end value
114 * @return <code>true</code> if the collection contains at least one of the range
115 */
116 boolean containsAny(char startInclusive, char endInclusive);
117
118 /**
119 * Gets the elements of this collection as an array.
120 *
121 * @return a new array containing a copy of the elements of this collection
122 */
123 char[] toCharArray();
124
125 /**
126 * Copies the elements of this collection into an array at a specified position.
127 * Previous values in the array are overwritten.
128 * <p>
129 * If the array specified is null a new array is created.
130 * If the array specified is large enough, it will be modified.
131 * If the array is not large enough, a new array will be created containing the
132 * values from the specified array before the startIndex plus those from this collection.
133 *
134 * @param array the array to add the elements to, null creates new array
135 * @param startIndex the position in the array to start setting elements
136 * @return the array with the populated collection, not null
137 * @throws IndexOutOfBoundsException if the index is negative
138 */
139 char[] toCharArray(char[] array, int startIndex);
140
141 // Optional operations
142 //-----------------------------------------------------------------------
143 /**
144 * Adds a primitive value to this collection (optional operation).
145 * <p>
146 * This method is optional, throwing an UnsupportedOperationException if the
147 * collection cannot be added to.
148 *
149 * @param value the value to add to this collection
150 * @return <code>true</code> if this collection was modified by this method call
151 * @throws IllegalArgumentException if value is rejected by this collection
152 * @throws UnsupportedOperationException if not supported by this collection
153 */
154 boolean add(char value);
155
156 /**
157 * Adds an array of primitive values to this collection (optional operation).
158 * <p>
159 * This method is optional, throwing an UnsupportedOperationException if the
160 * collection cannot be added to.
161 *
162 * @param values the values to add to this collection, null treated as empty array
163 * @return <code>true</code> if this collection was modified by this method call
164 * @throws IllegalArgumentException if a value is rejected by this collection
165 * @throws UnsupportedOperationException if not supported by this collection
166 */
167 boolean addAll(char[] values);
168
169 /**
170 * Adds a collection of primitive values to this collection (optional operation).
171 * <p>
172 * This method is optional, throwing an UnsupportedOperationException if the
173 * collection cannot be added to.
174 *
175 * @param values the values to add to this collection, null treated as empty collection
176 * @return <code>true</code> if this collection was modified by this method call
177 * @throws IllegalArgumentException if a value is rejected by this collection
178 * @throws UnsupportedOperationException if not supported by this collection
179 */
180 boolean addAll(CharCollection values);
181
182 /**
183 * Adds a range of primitive values to this collection (optional operation).
184 * <p>
185 * The range is defined to be inclusive of the start and end.
186 * If the start is greater than the end then the range is equivalent to an empty collection.
187 * <p>
188 * This method is optional, throwing an UnsupportedOperationException if the
189 * collection cannot be added to.
190 *
191 * @param startInclusive the inclusive range start value
192 * @param endInclusive the inclusive range end value
193 * @return <code>true</code> if this collection was modified by this method call
194 * @throws IllegalArgumentException if a value is rejected by this set
195 * @throws UnsupportedOperationException if not supported by this set
196 */
197 boolean addAll(char startInclusive, char endInclusive);
198
199 /**
200 * Removes the first occurrence of the specified primitive value from this collection
201 * (optional operation).
202 * <p>
203 * This method is optional, throwing an UnsupportedOperationException if the
204 * collection cannot be removed from.
205 *
206 * @param value the value to remove
207 * @return <code>true</code> if this collection was modified by this method call
208 * @throws UnsupportedOperationException if not supported by this collection
209 */
210 boolean removeFirst(char value);
211
212 /**
213 * Removes all occurrences of the specified primitive value from this collection
214 * (optional operation).
215 * <p>
216 * This method is optional, throwing an UnsupportedOperationException if the
217 * collection cannot be removed from.
218 *
219 * @param value the value to remove
220 * @return <code>true</code> if this collection was modified by this method call
221 * @throws UnsupportedOperationException if not supported by this collection
222 */
223 boolean removeAll(char value);
224
225 /**
226 * Removes all occurrences from this collection of each primitive in the specified array
227 * (optional operation).
228 * <p>
229 * This method is optional, throwing an UnsupportedOperationException if the
230 * collection cannot be removed from.
231 *
232 * @param values the values to remove from this collection, null treated as empty array
233 * @return <code>true</code> if this collection was modified by this method call
234 * @throws UnsupportedOperationException if not supported by this collection
235 */
236 boolean removeAll(char[] values);
237
238 /**
239 * Removes all occurrences from this collection of each primitive in the specified collection
240 * (optional operation).
241 * <p>
242 * This method is optional, throwing an UnsupportedOperationException if the
243 * collection cannot be removed from.
244 *
245 * @param values the values to remove from this collection, null treated as empty collection
246 * @return <code>true</code> if this collection was modified by this method call
247 * @throws UnsupportedOperationException if not supported by this collection
248 */
249 boolean removeAll(CharCollection values);
250
251 /**
252 * Removes all occurrences of a range of primitive values from this collection
253 * (optional operation).
254 * <p>
255 * The range is defined to be inclusive of the start and end.
256 * The elements removed are greater than or equal to the start and
257 * less than or equal to the end.
258 * Thus if the start is greater than the end then no elements are removed.
259 * <p>
260 * This method is optional, throwing an UnsupportedOperationException if the
261 * set cannot be changed.
262 *
263 * @param startInclusive the inclusive range start value
264 * @param endInclusive the inclusive range end value
265 * @return <code>true</code> if this collection was modified by this method call
266 * @throws UnsupportedOperationException if not supported by this collection
267 */
268 boolean removeAll(char startInclusive, char endInclusive);
269
270 /**
271 * Retains each element of this collection that is present in the specified array
272 * removing all other values (optional operation).
273 * <p>
274 * This method is optional, throwing an UnsupportedOperationException if the
275 * collection cannot be removed from.
276 *
277 * @param values the values to retain in this collection, null treated as empty array
278 * @return <code>true</code> if this collection was modified by this method call
279 * @throws UnsupportedOperationException if not supported by this collection
280 */
281 boolean retainAll(char[] values);
282
283 /**
284 * Retains each element of this collection that is present in the specified collection
285 * removing all other values (optional operation).
286 * <p>
287 * This method is optional, throwing an UnsupportedOperationException if the
288 * collection cannot be removed from.
289 *
290 * @param values the values to retain in this collection, null treated as empty collection
291 * @return <code>true</code> if this collection was modified by this method call
292 * @throws UnsupportedOperationException if not supported by this collection
293 */
294 boolean retainAll(CharCollection values);
295
296 /**
297 * Retains all occurrences of a range of primitive values within this collection
298 * removing all values outside the range (optional operation).
299 * <p>
300 * The range is defined to be inclusive of the start and end.
301 * If the start is greater than the end then the range is equivalent to an empty collection.
302 * <p>
303 * This method is optional, throwing an UnsupportedOperationException if the
304 * set cannot be changed.
305 *
306 * @param startInclusive the inclusive range start value
307 * @param endInclusive the inclusive range end value
308 * @return <code>true</code> if this collection was modified by this method call
309 * @throws UnsupportedOperationException if not supported by this collection
310 */
311 boolean retainAll(char startInclusive, char endInclusive);
312
313 }