1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.util;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A {@code List} is a collection which maintains an ordering for its elements. Every
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * element in the {@code List} has an index. Each element can thus be accessed by its
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * index, with the first index being zero. Normally, {@code List}s allow duplicate
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * elements, as compared to Sets, where elements have to be unique.
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic interface List<E> extends Collection<E> {
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Inserts the specified object into this {@code List} at the specified location.
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The object is inserted before the current element at the specified
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * location. If the location is equal to the size of this {@code List}, the object
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * is added at the end. If the location is smaller than the size of this
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code List}, then all elements beyond the specified location are moved by one
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * position towards the end of the {@code List}.
35f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param location
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the index at which to insert.
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the object to add.
40f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
41f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if adding to this {@code List} is not supported.
42f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws ClassCastException
43f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if the class of the object is inappropriate for this
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *                {@code List}.
45f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IllegalArgumentException
46f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if the object cannot be added to this {@code List}.
47f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IndexOutOfBoundsException
48f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if {@code location < 0 || location > size()}
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void add(int location, E object);
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Adds the specified object at the end of this {@code List}.
54f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the object to add.
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return always true.
58f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
59f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if adding to this {@code List} is not supported.
60f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws ClassCastException
61f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if the class of the object is inappropriate for this
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *                {@code List}.
63f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IllegalArgumentException
64f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if the object cannot be added to this {@code List}.
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean add(E object);
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Inserts the objects in the specified collection at the specified location
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * in this {@code List}. The objects are added in the order they are returned from
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the collection's iterator.
72f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param location
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the index at which to insert.
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param collection
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the collection of objects to be inserted.
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return true if this {@code List} has been modified through the insertion, false
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         otherwise (i.e. if the passed collection was empty).
79f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
80f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if adding to this {@code List} is not supported.
81f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws ClassCastException
82f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if the class of an object is inappropriate for this
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *                {@code List}.
84f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IllegalArgumentException
85f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if an object cannot be added to this {@code List}.
86f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IndexOutOfBoundsException
87de2ae30023028e82e4f5ae0c9e88b05649a4c1beElliott Hughes     *                if {@code location < 0 || location > size()}
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean addAll(int location, Collection<? extends E> collection);
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Adds the objects in the specified collection to the end of this {@code List}. The
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * objects are added in the order in which they are returned from the
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * collection's iterator.
95f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param collection
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the collection of objects.
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if this {@code List} is modified, {@code false} otherwise
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         (i.e. if the passed collection was empty).
100f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
101f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if adding to this {@code List} is not supported.
102f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws ClassCastException
103f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if the class of an object is inappropriate for this
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *                {@code List}.
105f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IllegalArgumentException
106f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if an object cannot be added to this {@code List}.
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean addAll(Collection<? extends E> collection);
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Removes all elements from this {@code List}, leaving it empty.
112f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
113f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
114f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if removing from this {@code List} is not supported.
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #isEmpty
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #size
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void clear();
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Tests whether this {@code List} contains the specified object.
122f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the object to search for.
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if object is an element of this {@code List}, {@code false}
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         otherwise
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean contains(Object object);
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Tests whether this {@code List} contains all objects contained in the
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * specified collection.
133f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param collection
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the collection of objects
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if all objects in the specified collection are
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         elements of this {@code List}, {@code false} otherwise.
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean containsAll(Collection<?> collection);
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Compares the given object with the {@code List}, and returns true if they
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * represent the <em>same</em> object using a class specific comparison. For
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code List}s, this means that they contain the same elements in exactly the same
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * order.
146f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the object to compare with this object.
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return boolean {@code true} if the object is the same as this object,
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         and {@code false} if it is different from this object.
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #hashCode
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean equals(Object object);
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the element at the specified location in this {@code List}.
157f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param location
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the index of the element to return.
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the element at the specified location.
161f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IndexOutOfBoundsException
162de2ae30023028e82e4f5ae0c9e88b05649a4c1beElliott Hughes     *                if {@code location < 0 || location >= size()}
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public E get(int location);
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the hash code for this {@code List}. It is calculated by taking each
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * element' hashcode and its position in the {@code List} into account.
169f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the hash code of the {@code List}.
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int hashCode();
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Searches this {@code List} for the specified object and returns the index of the
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * first occurrence.
177f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the object to search for.
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the index of the first occurrence of the object or -1 if the
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         object was not found.
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int indexOf(Object object);
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns whether this {@code List} contains no elements.
187f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if this {@code List} has no elements, {@code false}
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         otherwise.
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #size
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean isEmpty();
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns an iterator on the elements of this {@code List}. The elements are
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * iterated in the same order as they occur in the {@code List}.
197f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return an iterator on the elements of this {@code List}.
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see Iterator
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Iterator<E> iterator();
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Searches this {@code List} for the specified object and returns the index of the
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * last occurrence.
206f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the object to search for.
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the index of the last occurrence of the object, or -1 if the
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         object was not found.
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int lastIndexOf(Object object);
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a {@code List} iterator on the elements of this {@code List}. The elements are
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * iterated in the same order that they occur in the {@code List}.
217f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code List} iterator on the elements of this {@code List}
219f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see ListIterator
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ListIterator<E> listIterator();
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a list iterator on the elements of this {@code List}. The elements are
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * iterated in the same order as they occur in the {@code List}. The iteration
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * starts at the specified location.
228f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param location
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the index at which to start the iteration.
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a list iterator on the elements of this {@code List}.
232f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IndexOutOfBoundsException
233f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if {@code location < 0 || location > size()}
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see ListIterator
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ListIterator<E> listIterator(int location);
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Removes the object at the specified location from this {@code List}.
240f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param location
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the index of the object to remove.
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the removed object.
244f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
245f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if removing from this {@code List} is not supported.
246f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IndexOutOfBoundsException
247de2ae30023028e82e4f5ae0c9e88b05649a4c1beElliott Hughes     *                if {@code location < 0 || location >= size()}
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public E remove(int location);
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Removes the first occurrence of the specified object from this {@code List}.
253f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the object to remove.
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return true if this {@code List} was modified by this operation, false
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         otherwise.
258f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
259f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if removing from this {@code List} is not supported.
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean remove(Object object);
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Removes all occurrences in this {@code List} of each object in the specified
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * collection.
266f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param collection
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the collection of objects to remove.
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if this {@code List} is modified, {@code false} otherwise.
270f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
271f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if removing from this {@code List} is not supported.
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean removeAll(Collection<?> collection);
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Removes all objects from this {@code List} that are not contained in the
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * specified collection.
278f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param collection
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the collection of objects to retain.
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if this {@code List} is modified, {@code false} otherwise.
282f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
283f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if removing from this {@code List} is not supported.
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean retainAll(Collection<?> collection);
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Replaces the element at the specified location in this {@code List} with the
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * specified object. This operation does not change the size of the {@code List}.
290f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param location
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the index at which to put the specified object.
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the object to insert.
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the previous element at the index.
296f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws UnsupportedOperationException
297f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if replacing elements in this {@code List} is not supported.
298f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws ClassCastException
299f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if the class of an object is inappropriate for this
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *                {@code List}.
301f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IllegalArgumentException
302f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if an object cannot be added to this {@code List}.
303f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IndexOutOfBoundsException
304de2ae30023028e82e4f5ae0c9e88b05649a4c1beElliott Hughes     *                if {@code location < 0 || location >= size()}
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public E set(int location, E object);
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the number of elements in this {@code List}.
310f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the number of elements in this {@code List}.
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int size();
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a {@code List} of the specified portion of this {@code List} from the given start
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * index to the end index minus one. The returned {@code List} is backed by this
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code List} so changes to it are reflected by the other.
319f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param start
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the index at which to start the sublist.
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param end
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the index one past the end of the sublist.
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a list of a portion of this {@code List}.
325f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws IndexOutOfBoundsException
326f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if {@code start < 0, start > end} or {@code end >
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *                size()}
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public List<E> subList(int start, int end);
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns an array containing all elements contained in this {@code List}.
333f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return an array of the elements from this {@code List}.
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Object[] toArray();
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns an array containing all elements contained in this {@code List}. If the
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * specified array is large enough to hold the elements, the specified array
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * is used, otherwise an array of the same type is created. If the specified
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * array is used and is larger than this {@code List}, the array element following
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the collection elements is set to null.
344f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param array
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the array.
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return an array of the elements from this {@code List}.
348f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @throws ArrayStoreException
349f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *                if the type of an element in this {@code List} cannot be stored
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *                in the type of the specified array.
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public <T> T[] toArray(T[] array);
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
354