OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [java/] [util/] [List.java] - Blame information for rev 774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 771 jeremybenn
/* List.java -- An ordered collection which allows indexed access
2
   Copyright (C) 1998, 2001, 2004, 2005 Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package java.util;
40
 
41
/**
42
 * An ordered collection (also known as a list). This collection allows
43
 * access to elements by position, as well as control on where elements
44
 * are inserted. Unlike sets, duplicate elements are permitted by this
45
 * general contract (if a subclass forbids duplicates, this should be
46
 * documented).
47
 * <p>
48
 *
49
 * List places additional requirements on <code>iterator</code>,
50
 * <code>add</code>, <code>remove</code>, <code>equals</code>, and
51
 * <code>hashCode</code>, in addition to requiring more methods. List
52
 * indexing is 0-based (like arrays), although some implementations may
53
 * require time proportional to the index to obtain an arbitrary element.
54
 * The List interface is incompatible with Set; you cannot implement both
55
 * simultaneously.
56
 * <p>
57
 *
58
 * Lists also provide a <code>ListIterator</code> which allows bidirectional
59
 * traversal and other features atop regular iterators. Lists can be
60
 * searched for arbitrary elements, and allow easy insertion and removal
61
 * of multiple elements in one method call.
62
 * <p>
63
 *
64
 * Note: While lists may contain themselves as elements, this leads to
65
 * undefined (usually infinite recursive) behavior for some methods like
66
 * hashCode or equals.
67
 *
68
 * @author Original author unknown
69
 * @author Eric Blake (ebb9@email.byu.edu)
70
 * @see Collection
71
 * @see Set
72
 * @see ArrayList
73
 * @see LinkedList
74
 * @see Vector
75
 * @see Arrays#asList(Object[])
76
 * @see Collections#nCopies(int, Object)
77
 * @see Collections#EMPTY_LIST
78
 * @see AbstractList
79
 * @see AbstractSequentialList
80
 * @since 1.2
81
 * @status updated to 1.4
82
 */
83
public interface List<E> extends Collection<E>
84
{
85
  /**
86
   * Insert an element into the list at a given position (optional operation).
87
   * This shifts all existing elements from that position to the end one
88
   * index to the right. This version of add has no return, since it is
89
   * assumed to always succeed if there is no exception.
90
   *
91
   * @param index the location to insert the item
92
   * @param o the object to insert
93
   * @throws UnsupportedOperationException if this list does not support the
94
   *         add operation
95
   * @throws IndexOutOfBoundsException if index &lt; 0 || index &gt; size()
96
   * @throws ClassCastException if o cannot be added to this list due to its
97
   *         type
98
   * @throws IllegalArgumentException if o cannot be added to this list for
99
   *         some other reason
100
   * @throws NullPointerException if o is null and this list doesn't support
101
   *         the addition of null values.
102
   */
103
  void add(int index, E o);
104
 
105
  /**
106
   * Add an element to the end of the list (optional operation). If the list
107
   * imposes restraints on what can be inserted, such as no null elements,
108
   * this should be documented.
109
   *
110
   * @param o the object to add
111
   * @return true, as defined by Collection for a modified list
112
   * @throws UnsupportedOperationException if this list does not support the
113
   *         add operation
114
   * @throws ClassCastException if o cannot be added to this list due to its
115
   *         type
116
   * @throws IllegalArgumentException if o cannot be added to this list for
117
   *         some other reason
118
   * @throws NullPointerException if o is null and this list doesn't support
119
   *         the addition of null values.
120
   */
121
  boolean add(E o);
122
 
123
  /**
124
   * Insert the contents of a collection into the list at a given position
125
   * (optional operation). Shift all elements at that position to the right
126
   * by the number of elements inserted. This operation is undefined if
127
   * this list is modified during the operation (for example, if you try
128
   * to insert a list into itself).
129
   *
130
   * @param index the location to insert the collection
131
   * @param c the collection to insert
132
   * @return true if the list was modified by this action, that is, if c is
133
   *         non-empty
134
   * @throws UnsupportedOperationException if this list does not support the
135
   *         addAll operation
136
   * @throws IndexOutOfBoundsException if index &lt; 0 || index &gt; size()
137
   * @throws ClassCastException if some element of c cannot be added to this
138
   *         list due to its type
139
   * @throws IllegalArgumentException if some element of c cannot be added
140
   *         to this list for some other reason
141
   * @throws NullPointerException if some element of c is null and this list
142
   *         doesn't support the addition of null values.
143
   * @throws NullPointerException if the specified collection is null
144
   * @see #add(int, Object)
145
   */
146
  boolean addAll(int index, Collection<? extends E> c);
147
 
148
  /**
149
   * Add the contents of a collection to the end of the list (optional
150
   * operation).  This operation is undefined if this list is modified
151
   * during the operation (for example, if you try to insert a list into
152
   * itself).
153
   *
154
   * @param c the collection to add
155
   * @return true if the list was modified by this action, that is, if c is
156
   *         non-empty
157
   * @throws UnsupportedOperationException if this list does not support the
158
   *         addAll operation
159
   * @throws ClassCastException if some element of c cannot be added to this
160
   *         list due to its type
161
   * @throws IllegalArgumentException if some element of c cannot be added
162
   *         to this list for some other reason
163
   * @throws NullPointerException if the specified collection is null
164
   * @throws NullPointerException if some element of c is null and this list
165
   *         doesn't support the addition of null values.
166
   * @see #add(Object)
167
   */
168
  boolean addAll(Collection<? extends E> c);
169
 
170
  /**
171
   * Clear the list, such that a subsequent call to isEmpty() would return
172
   * true (optional operation).
173
   *
174
   * @throws UnsupportedOperationException if this list does not support the
175
   *         clear operation
176
   */
177
  void clear();
178
 
179
  /**
180
   * Test whether this list contains a given object as one of its elements.
181
   * This is defined as the existence of an element e such that
182
   * <code>o == null ? e == null : o.equals(e)</code>.
183
   *
184
   * @param o the element to look for
185
   * @return true if this list contains the element
186
   * @throws ClassCastException if the type of o is not a valid type
187
   *         for this list.
188
   * @throws NullPointerException if o is null and the list doesn't
189
   *         support null values.
190
   */
191
  boolean contains(Object o);
192
 
193
  /**
194
   * Test whether this list contains every element in a given collection.
195
   *
196
   * @param c the collection to test for
197
   * @return true if for every element o in c, contains(o) would return true
198
   * @throws NullPointerException if the collection is null
199
   * @throws ClassCastException if the type of any element in c is not a valid
200
   *         type for this list.
201
   * @throws NullPointerException if some element of c is null and this
202
   *         list does not support null values.
203
   * @see #contains(Object)
204
   */
205
  boolean containsAll(Collection<?> c);
206
 
207
  /**
208
   * Test whether this list is equal to another object. A List is defined to be
209
   * equal to an object if and only if that object is also a List, and the two
210
   * lists have the same sequence. Two lists l1 and l2 are equal if and only
211
   * if <code>l1.size() == l2.size()</code>, and for every integer n between 0
212
   * and <code>l1.size() - 1</code> inclusive, <code>l1.get(n) == null ?
213
   * l2.get(n) == null : l1.get(n).equals(l2.get(n))</code>.
214
   *
215
   * @param o the object to test for equality with this list
216
   * @return true if o is equal to this list
217
   * @see Object#equals(Object)
218
   * @see #hashCode()
219
   */
220
  boolean equals(Object o);
221
 
222
  /**
223
   * Get the element at a given index in this list.
224
   *
225
   * @param index the index of the element to be returned
226
   * @return the element at index index in this list
227
   * @throws IndexOutOfBoundsException if index &lt; 0 || index &gt;= size()
228
   */
229
  E get(int index);
230
 
231
  /**
232
   * Obtains a hash code for this list. In order to obey the general
233
   * contract of the hashCode method of class Object, this value is
234
   * calculated as follows:
235
   *
236
<p><pre>hashCode = 1;
237
Iterator i = list.iterator();
238
while (i.hasNext())
239
{
240
  Object obj = i.next();
241
  hashCode = 31 * hashCode + (obj == null ? 0 : obj.hashCode());
242
}</pre>
243
   *
244
   * <p>This ensures that the general contract of Object.hashCode()
245
   * is adhered to.
246
   *
247
   * @return the hash code of this list
248
   * @see Object#hashCode()
249
   * @see #equals(Object)
250
   */
251
  int hashCode();
252
 
253
  /**
254
   * Obtain the first index at which a given object is to be found in this
255
   * list.
256
   *
257
   * @param o the object to search for
258
   * @return the least integer n such that <code>o == null ? get(n) == null :
259
   *         o.equals(get(n))</code>, or -1 if there is no such index.
260
   * @throws ClassCastException if the type of o is not a valid
261
   *         type for this list.
262
   * @throws NullPointerException if o is null and this
263
   *         list does not support null values.
264
   */
265
  int indexOf(Object o);
266
 
267
  /**
268
   * Test whether this list is empty, that is, if size() == 0.
269
   *
270
   * @return true if this list contains no elements
271
   */
272
  boolean isEmpty();
273
 
274
  /**
275
   * Obtain an Iterator over this list, whose sequence is the list order.
276
   *
277
   * @return an Iterator over the elements of this list, in order
278
   */
279
  Iterator<E> iterator();
280
 
281
  /**
282
   * Obtain the last index at which a given object is to be found in this
283
   * list.
284
   *
285
   * @return the greatest integer n such that <code>o == null ? get(n) == null
286
   *         : o.equals(get(n))</code>, or -1 if there is no such index.
287
   * @throws ClassCastException if the type of o is not a valid
288
   *         type for this list.
289
   * @throws NullPointerException if o is null and this
290
   *         list does not support null values.
291
   */
292
  int lastIndexOf(Object o);
293
 
294
  /**
295
   * Obtain a ListIterator over this list, starting at the beginning.
296
   *
297
   * @return a ListIterator over the elements of this list, in order, starting
298
   *         at the beginning
299
   */
300
  ListIterator<E> listIterator();
301
 
302
  /**
303
   * Obtain a ListIterator over this list, starting at a given position.
304
   * A first call to next() would return the same as get(index), and a
305
   * first call to previous() would return the same as get(index - 1).
306
   *
307
   * @param index the position, between 0 and size() inclusive, to begin the
308
   *        iteration from
309
   * @return a ListIterator over the elements of this list, in order, starting
310
   *         at index
311
   * @throws IndexOutOfBoundsException if index &lt; 0 || index &gt; size()
312
   */
313
  ListIterator<E> listIterator(int index);
314
 
315
  /**
316
   * Remove the element at a given position in this list (optional operation).
317
   * Shifts all remaining elements to the left to fill the gap.
318
   *
319
   * @param index the position within the list of the object to remove
320
   * @return the object that was removed
321
   * @throws UnsupportedOperationException if this list does not support the
322
   *         remove operation
323
   * @throws IndexOutOfBoundsException if index &lt; 0 || index &gt;= size()
324
   */
325
  E remove(int index);
326
 
327
  /**
328
   * Remove the first occurence of an object from this list (optional
329
   * operation). That is, remove the first element e such that
330
   * <code>o == null ? e == null : o.equals(e)</code>.
331
   *
332
   * @param o the object to remove
333
   * @return true if the list changed as a result of this call, that is, if
334
   *         the list contained at least one occurrence of o
335
   * @throws UnsupportedOperationException if this list does not support the
336
   *         remove operation
337
   * @throws ClassCastException if the type of o is not a valid
338
   *         type for this list.
339
   * @throws NullPointerException if o is null and this
340
   *         list does not support removing null values.
341
   */
342
  boolean remove(Object o);
343
 
344
  /**
345
   * Remove all elements of a given collection from this list (optional
346
   * operation). That is, remove every element e such that c.contains(e).
347
   *
348
   * @param c the collection to filter out
349
   * @return true if this list was modified as a result of this call
350
   * @throws UnsupportedOperationException if this list does not support the
351
   *         removeAll operation
352
   * @throws NullPointerException if the collection is null
353
   * @throws ClassCastException if the type of any element in c is not a valid
354
   *         type for this list.
355
   * @throws NullPointerException if some element of c is null and this
356
   *         list does not support removing null values.
357
   * @see #remove(Object)
358
   * @see #contains(Object)
359
   */
360
  boolean removeAll(Collection<?> c);
361
 
362
  /**
363
   * Remove all elements of this list that are not contained in a given
364
   * collection (optional operation). That is, remove every element e such
365
   * that !c.contains(e).
366
   *
367
   * @param c the collection to retain
368
   * @return true if this list was modified as a result of this call
369
   * @throws UnsupportedOperationException if this list does not support the
370
   *         retainAll operation
371
   * @throws NullPointerException if the collection is null
372
   * @throws ClassCastException if the type of any element in c is not a valid
373
   *         type for this list.
374
   * @throws NullPointerException if some element of c is null and this
375
   *         list does not support retaining null values.
376
   * @see #remove(Object)
377
   * @see #contains(Object)
378
   */
379
  boolean retainAll(Collection<?> c);
380
 
381
  /**
382
   * Replace an element of this list with another object (optional operation).
383
   *
384
   * @param index the position within this list of the element to be replaced
385
   * @param o the object to replace it with
386
   * @return the object that was replaced
387
   * @throws UnsupportedOperationException if this list does not support the
388
   *         set operation
389
   * @throws IndexOutOfBoundsException if index &lt; 0 || index &gt;= size()
390
   * @throws ClassCastException if o cannot be added to this list due to its
391
   *         type
392
   * @throws IllegalArgumentException if o cannot be added to this list for
393
   *         some other reason
394
   * @throws NullPointerException if o is null and this
395
   *         list does not support null values.
396
   */
397
  E set(int index, E o);
398
 
399
  /**
400
   * Get the number of elements in this list. If the list contains more
401
   * than Integer.MAX_VALUE elements, return Integer.MAX_VALUE.
402
   *
403
   * @return the number of elements in the list
404
   */
405
  int size();
406
 
407
  /**
408
   * Obtain a List view of a subsection of this list, from fromIndex
409
   * (inclusive) to toIndex (exclusive). If the two indices are equal, the
410
   * sublist is empty. The returned list should be modifiable if and only
411
   * if this list is modifiable. Changes to the returned list should be
412
   * reflected in this list. If this list is structurally modified in
413
   * any way other than through the returned list, the result of any subsequent
414
   * operations on the returned list is undefined.
415
   *
416
   * @param fromIndex the index that the returned list should start from
417
   *        (inclusive)
418
   * @param toIndex the index that the returned list should go to (exclusive)
419
   * @return a List backed by a subsection of this list
420
   * @throws IndexOutOfBoundsException if fromIndex &lt; 0
421
   *         || toIndex &gt; size() || fromIndex &gt; toIndex
422
   */
423
  List<E> subList(int fromIndex, int toIndex);
424
 
425
  /**
426
   * Copy the current contents of this list into an array.
427
   *
428
   * @return an array of type Object[] and length equal to the length of this
429
   *         list, containing the elements currently in this list, in order
430
   */
431
  Object[] toArray();
432
 
433
  /**
434
   * Copy the current contents of this list into an array. If the array passed
435
   * as an argument has length less than that of this list, an array of the
436
   * same run-time type as a, and length equal to the length of this list, is
437
   * allocated using Reflection. Otherwise, a itself is used. The elements of
438
   * this list are copied into it, and if there is space in the array, the
439
   * following element is set to null. The resultant array is returned.
440
   * Note: The fact that the following element is set to null is only useful
441
   * if it is known that this list does not contain any null elements.
442
   *
443
   * @param a the array to copy this list into
444
   * @return an array containing the elements currently in this list, in
445
   *         order
446
   * @throws ArrayStoreException if the type of any element of the
447
   *         collection is not a subtype of the element type of a
448
   * @throws NullPointerException if the specified array is null
449
   */
450
  <T> T[] toArray(T[] a);
451
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.