< prev index next >

src/java.base/share/classes/java/util/List.java

Print this page

        

*** 32,85 **** * interface has precise control over where in the list each element is * inserted. The user can access elements by their integer index (position in * the list), and search for elements in the list.<p> * * Unlike sets, lists typically allow duplicate elements. More formally, ! * lists typically allow pairs of elements <tt>e1</tt> and <tt>e2</tt> ! * such that <tt>e1.equals(e2)</tt>, and they typically allow multiple * null elements if they allow null elements at all. It is not inconceivable * that someone might wish to implement a list that prohibits duplicates, by * throwing runtime exceptions when the user attempts to insert them, but we * expect this usage to be rare.<p> * ! * The <tt>List</tt> interface places additional stipulations, beyond those ! * specified in the <tt>Collection</tt> interface, on the contracts of the ! * <tt>iterator</tt>, <tt>add</tt>, <tt>remove</tt>, <tt>equals</tt>, and ! * <tt>hashCode</tt> methods. Declarations for other inherited methods are * also included here for convenience.<p> * ! * The <tt>List</tt> interface provides four methods for positional (indexed) * access to list elements. Lists (like Java arrays) are zero based. Note * that these operations may execute in time proportional to the index value ! * for some implementations (the <tt>LinkedList</tt> class, for * example). Thus, iterating over the elements in a list is typically * preferable to indexing through it if the caller does not know the * implementation.<p> * ! * The <tt>List</tt> interface provides a special iterator, called a ! * <tt>ListIterator</tt>, that allows element insertion and replacement, and * bidirectional access in addition to the normal operations that the ! * <tt>Iterator</tt> interface provides. A method is provided to obtain a * list iterator that starts at a specified position in the list.<p> * ! * The <tt>List</tt> interface provides two methods to search for a specified * object. From a performance standpoint, these methods should be used with * caution. In many implementations they will perform costly linear * searches.<p> * ! * The <tt>List</tt> interface provides two methods to efficiently insert and * remove multiple elements at an arbitrary point in the list.<p> * * Note: While it is permissible for lists to contain themselves as elements, ! * extreme caution is advised: the <tt>equals</tt> and <tt>hashCode</tt> * methods are no longer well defined on such a list. * * <p>Some list implementations have restrictions on the elements that * they may contain. For example, some implementations prohibit null elements, * and some have restrictions on the types of their elements. Attempting to * add an ineligible element throws an unchecked exception, typically ! * <tt>NullPointerException</tt> or <tt>ClassCastException</tt>. Attempting * to query the presence of an ineligible element may throw an exception, * or it may simply return false; some implementations will exhibit the former * behavior and some will exhibit the latter. More generally, attempting an * operation on an ineligible element whose completion would not result in * the insertion of an ineligible element into the list may throw an --- 32,85 ---- * interface has precise control over where in the list each element is * inserted. The user can access elements by their integer index (position in * the list), and search for elements in the list.<p> * * Unlike sets, lists typically allow duplicate elements. More formally, ! * lists typically allow pairs of elements {@code e1} and {@code e2} ! * such that {@code e1.equals(e2)}, and they typically allow multiple * null elements if they allow null elements at all. It is not inconceivable * that someone might wish to implement a list that prohibits duplicates, by * throwing runtime exceptions when the user attempts to insert them, but we * expect this usage to be rare.<p> * ! * The {@code List} interface places additional stipulations, beyond those ! * specified in the {@code Collection} interface, on the contracts of the ! * {@code iterator}, {@code add}, {@code remove}, {@code equals}, and ! * {@code hashCode} methods. Declarations for other inherited methods are * also included here for convenience.<p> * ! * The {@code List} interface provides four methods for positional (indexed) * access to list elements. Lists (like Java arrays) are zero based. Note * that these operations may execute in time proportional to the index value ! * for some implementations (the {@code LinkedList} class, for * example). Thus, iterating over the elements in a list is typically * preferable to indexing through it if the caller does not know the * implementation.<p> * ! * The {@code List} interface provides a special iterator, called a ! * {@code ListIterator}, that allows element insertion and replacement, and * bidirectional access in addition to the normal operations that the ! * {@code Iterator} interface provides. A method is provided to obtain a * list iterator that starts at a specified position in the list.<p> * ! * The {@code List} interface provides two methods to search for a specified * object. From a performance standpoint, these methods should be used with * caution. In many implementations they will perform costly linear * searches.<p> * ! * The {@code List} interface provides two methods to efficiently insert and * remove multiple elements at an arbitrary point in the list.<p> * * Note: While it is permissible for lists to contain themselves as elements, ! * extreme caution is advised: the {@code equals} and {@code hashCode} * methods are no longer well defined on such a list. * * <p>Some list implementations have restrictions on the elements that * they may contain. For example, some implementations prohibit null elements, * and some have restrictions on the types of their elements. Attempting to * add an ineligible element throws an unchecked exception, typically ! * {@code NullPointerException} or {@code ClassCastException}. Attempting * to query the presence of an ineligible element may throw an exception, * or it may simply return false; some implementations will exhibit the former * behavior and some will exhibit the latter. More generally, attempting an * operation on an ineligible element whose completion would not result in * the insertion of an ineligible element into the list may throw an
*** 111,142 **** public interface List<E> extends Collection<E> { // Query Operations /** * Returns the number of elements in this list. If this list contains ! * more than <tt>Integer.MAX_VALUE</tt> elements, returns ! * <tt>Integer.MAX_VALUE</tt>. * * @return the number of elements in this list */ int size(); /** ! * Returns <tt>true</tt> if this list contains no elements. * ! * @return <tt>true</tt> if this list contains no elements */ boolean isEmpty(); /** ! * Returns <tt>true</tt> if this list contains the specified element. ! * More formally, returns <tt>true</tt> if and only if this list contains ! * at least one element <tt>e</tt> such that ! * <tt>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o.equals(e))</tt>. * * @param o element whose presence in this list is to be tested ! * @return <tt>true</tt> if this list contains the specified element * @throws ClassCastException if the type of the specified element * is incompatible with this list * (<a href="Collection.html#optional-restrictions">optional</a>) * @throws NullPointerException if the specified element is null and this * list does not permit null elements --- 111,142 ---- public interface List<E> extends Collection<E> { // Query Operations /** * Returns the number of elements in this list. If this list contains ! * more than {@code Integer.MAX_VALUE} elements, returns ! * {@code Integer.MAX_VALUE}. * * @return the number of elements in this list */ int size(); /** ! * Returns {@code true} if this list contains no elements. * ! * @return {@code true} if this list contains no elements */ boolean isEmpty(); /** ! * Returns {@code true} if this list contains the specified element. ! * More formally, returns {@code true} if and only if this list contains ! * at least one element {@code e} such that ! * <code>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o.equals(e))</code>. * * @param o element whose presence in this list is to be tested ! * @return {@code true} if this list contains the specified element * @throws ClassCastException if the type of the specified element * is incompatible with this list * (<a href="Collection.html#optional-restrictions">optional</a>) * @throws NullPointerException if the specified element is null and this * list does not permit null elements
*** 177,205 **** * array is allocated with the runtime type of the specified array and * the size of this list. * * <p>If the list fits in the specified array with room to spare (i.e., * the array has more elements than the list), the element in the array ! * immediately following the end of the list is set to <tt>null</tt>. * (This is useful in determining the length of the list <i>only</i> if * the caller knows that the list does not contain any null elements.) * * <p>Like the {@link #toArray()} method, this method acts as bridge between * array-based and collection-based APIs. Further, this method allows * precise control over the runtime type of the output array, and may, * under certain circumstances, be used to save allocation costs. * ! * <p>Suppose <tt>x</tt> is a list known to contain only strings. * The following code can be used to dump the list into a newly ! * allocated array of <tt>String</tt>: * * <pre>{@code * String[] y = x.toArray(new String[0]); * }</pre> * ! * Note that <tt>toArray(new Object[0])</tt> is identical in function to ! * <tt>toArray()</tt>. * * @param a the array into which the elements of this list are to * be stored, if it is big enough; otherwise, a new array of the * same runtime type is allocated for this purpose. * @return an array containing the elements of this list --- 177,205 ---- * array is allocated with the runtime type of the specified array and * the size of this list. * * <p>If the list fits in the specified array with room to spare (i.e., * the array has more elements than the list), the element in the array ! * immediately following the end of the list is set to {@code null}. * (This is useful in determining the length of the list <i>only</i> if * the caller knows that the list does not contain any null elements.) * * <p>Like the {@link #toArray()} method, this method acts as bridge between * array-based and collection-based APIs. Further, this method allows * precise control over the runtime type of the output array, and may, * under certain circumstances, be used to save allocation costs. * ! * <p>Suppose {@code x} is a list known to contain only strings. * The following code can be used to dump the list into a newly ! * allocated array of {@code String}: * * <pre>{@code * String[] y = x.toArray(new String[0]); * }</pre> * ! * Note that {@code toArray(new Object[0])} is identical in function to ! * {@code toArray()}. * * @param a the array into which the elements of this list are to * be stored, if it is big enough; otherwise, a new array of the * same runtime type is allocated for this purpose. * @return an array containing the elements of this list
*** 223,234 **** * restrictions on the type of elements that may be added. List * classes should clearly specify in their documentation any restrictions * on what elements may be added. * * @param e element to be appended to this list ! * @return <tt>true</tt> (as specified by {@link Collection#add}) ! * @throws UnsupportedOperationException if the <tt>add</tt> operation * is not supported by this list * @throws ClassCastException if the class of the specified element * prevents it from being added to this list * @throws NullPointerException if the specified element is null and this * list does not permit null elements --- 223,234 ---- * restrictions on the type of elements that may be added. List * classes should clearly specify in their documentation any restrictions * on what elements may be added. * * @param e element to be appended to this list ! * @return {@code true} (as specified by {@link Collection#add}) ! * @throws UnsupportedOperationException if the {@code add} operation * is not supported by this list * @throws ClassCastException if the class of the specified element * prevents it from being added to this list * @throws NullPointerException if the specified element is null and this * list does not permit null elements
*** 239,276 **** /** * Removes the first occurrence of the specified element from this list, * if it is present (optional operation). If this list does not contain * the element, it is unchanged. More formally, removes the element with ! * the lowest index <tt>i</tt> such that ! * <tt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))</tt> ! * (if such an element exists). Returns <tt>true</tt> if this list * contained the specified element (or equivalently, if this list changed * as a result of the call). * * @param o element to be removed from this list, if present ! * @return <tt>true</tt> if this list contained the specified element * @throws ClassCastException if the type of the specified element * is incompatible with this list * (<a href="Collection.html#optional-restrictions">optional</a>) * @throws NullPointerException if the specified element is null and this * list does not permit null elements * (<a href="Collection.html#optional-restrictions">optional</a>) ! * @throws UnsupportedOperationException if the <tt>remove</tt> operation * is not supported by this list */ boolean remove(Object o); // Bulk Modification Operations /** ! * Returns <tt>true</tt> if this list contains all of the elements of the * specified collection. * * @param c collection to be checked for containment in this list ! * @return <tt>true</tt> if this list contains all of the elements of the * specified collection * @throws ClassCastException if the types of one or more elements * in the specified collection are incompatible with this * list * (<a href="Collection.html#optional-restrictions">optional</a>) --- 239,276 ---- /** * Removes the first occurrence of the specified element from this list, * if it is present (optional operation). If this list does not contain * the element, it is unchanged. More formally, removes the element with ! * the lowest index {@code i} such that ! * <code>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))</code> ! * (if such an element exists). Returns {@code true} if this list * contained the specified element (or equivalently, if this list changed * as a result of the call). * * @param o element to be removed from this list, if present ! * @return {@code true} if this list contained the specified element * @throws ClassCastException if the type of the specified element * is incompatible with this list * (<a href="Collection.html#optional-restrictions">optional</a>) * @throws NullPointerException if the specified element is null and this * list does not permit null elements * (<a href="Collection.html#optional-restrictions">optional</a>) ! * @throws UnsupportedOperationException if the {@code remove} operation * is not supported by this list */ boolean remove(Object o); // Bulk Modification Operations /** ! * Returns {@code true} if this list contains all of the elements of the * specified collection. * * @param c collection to be checked for containment in this list ! * @return {@code true} if this list contains all of the elements of the * specified collection * @throws ClassCastException if the types of one or more elements * in the specified collection are incompatible with this * list * (<a href="Collection.html#optional-restrictions">optional</a>)
*** 290,301 **** * operation is undefined if the specified collection is modified while * the operation is in progress. (Note that this will occur if the * specified collection is this list, and it's nonempty.) * * @param c collection containing elements to be added to this list ! * @return <tt>true</tt> if this list changed as a result of the call ! * @throws UnsupportedOperationException if the <tt>addAll</tt> operation * is not supported by this list * @throws ClassCastException if the class of an element of the specified * collection prevents it from being added to this list * @throws NullPointerException if the specified collection contains one * or more null elements and this list does not permit null --- 290,301 ---- * operation is undefined if the specified collection is modified while * the operation is in progress. (Note that this will occur if the * specified collection is this list, and it's nonempty.) * * @param c collection containing elements to be added to this list ! * @return {@code true} if this list changed as a result of the call ! * @throws UnsupportedOperationException if the {@code addAll} operation * is not supported by this list * @throws ClassCastException if the class of an element of the specified * collection prevents it from being added to this list * @throws NullPointerException if the specified collection contains one * or more null elements and this list does not permit null
*** 318,349 **** * collection is this list, and it's nonempty.) * * @param index index at which to insert the first element from the * specified collection * @param c collection containing elements to be added to this list ! * @return <tt>true</tt> if this list changed as a result of the call ! * @throws UnsupportedOperationException if the <tt>addAll</tt> operation * is not supported by this list * @throws ClassCastException if the class of an element of the specified * collection prevents it from being added to this list * @throws NullPointerException if the specified collection contains one * or more null elements and this list does not permit null * elements, or if the specified collection is null * @throws IllegalArgumentException if some property of an element of the * specified collection prevents it from being added to this list * @throws IndexOutOfBoundsException if the index is out of range ! * (<tt>index &lt; 0 || index &gt; size()</tt>) */ boolean addAll(int index, Collection<? extends E> c); /** * Removes from this list all of its elements that are contained in the * specified collection (optional operation). * * @param c collection containing elements to be removed from this list ! * @return <tt>true</tt> if this list changed as a result of the call ! * @throws UnsupportedOperationException if the <tt>removeAll</tt> operation * is not supported by this list * @throws ClassCastException if the class of an element of this list * is incompatible with the specified collection * (<a href="Collection.html#optional-restrictions">optional</a>) * @throws NullPointerException if this list contains a null element and the --- 318,349 ---- * collection is this list, and it's nonempty.) * * @param index index at which to insert the first element from the * specified collection * @param c collection containing elements to be added to this list ! * @return {@code true} if this list changed as a result of the call ! * @throws UnsupportedOperationException if the {@code addAll} operation * is not supported by this list * @throws ClassCastException if the class of an element of the specified * collection prevents it from being added to this list * @throws NullPointerException if the specified collection contains one * or more null elements and this list does not permit null * elements, or if the specified collection is null * @throws IllegalArgumentException if some property of an element of the * specified collection prevents it from being added to this list * @throws IndexOutOfBoundsException if the index is out of range ! * ({@code index < 0 || index > size()}) */ boolean addAll(int index, Collection<? extends E> c); /** * Removes from this list all of its elements that are contained in the * specified collection (optional operation). * * @param c collection containing elements to be removed from this list ! * @return {@code true} if this list changed as a result of the call ! * @throws UnsupportedOperationException if the {@code removeAll} operation * is not supported by this list * @throws ClassCastException if the class of an element of this list * is incompatible with the specified collection * (<a href="Collection.html#optional-restrictions">optional</a>) * @throws NullPointerException if this list contains a null element and the
*** 360,371 **** * specified collection (optional operation). In other words, removes * from this list all of its elements that are not contained in the * specified collection. * * @param c collection containing elements to be retained in this list ! * @return <tt>true</tt> if this list changed as a result of the call ! * @throws UnsupportedOperationException if the <tt>retainAll</tt> operation * is not supported by this list * @throws ClassCastException if the class of an element of this list * is incompatible with the specified collection * (<a href="Collection.html#optional-restrictions">optional</a>) * @throws NullPointerException if this list contains a null element and the --- 360,371 ---- * specified collection (optional operation). In other words, removes * from this list all of its elements that are not contained in the * specified collection. * * @param c collection containing elements to be retained in this list ! * @return {@code true} if this list changed as a result of the call ! * @throws UnsupportedOperationException if the {@code retainAll} operation * is not supported by this list * @throws ClassCastException if the class of an element of this list * is incompatible with the specified collection * (<a href="Collection.html#optional-restrictions">optional</a>) * @throws NullPointerException if this list contains a null element and the
*** 485,515 **** /** * Removes all of the elements from this list (optional operation). * The list will be empty after this call returns. * ! * @throws UnsupportedOperationException if the <tt>clear</tt> operation * is not supported by this list */ void clear(); // Comparison and hashing /** * Compares the specified object with this list for equality. Returns ! * <tt>true</tt> if and only if the specified object is also a list, both * lists have the same size, and all corresponding pairs of elements in ! * the two lists are <i>equal</i>. (Two elements <tt>e1</tt> and ! * <tt>e2</tt> are <i>equal</i> if <tt>(e1==null ? e2==null : ! * e1.equals(e2))</tt>.) In other words, two lists are defined to be * equal if they contain the same elements in the same order. This * definition ensures that the equals method works properly across ! * different implementations of the <tt>List</tt> interface. * * @param o the object to be compared for equality with this list ! * @return <tt>true</tt> if the specified object is equal to this list */ boolean equals(Object o); /** * Returns the hash code value for this list. The hash code of a list --- 485,515 ---- /** * Removes all of the elements from this list (optional operation). * The list will be empty after this call returns. * ! * @throws UnsupportedOperationException if the {@code clear} operation * is not supported by this list */ void clear(); // Comparison and hashing /** * Compares the specified object with this list for equality. Returns ! * {@code true} if and only if the specified object is also a list, both * lists have the same size, and all corresponding pairs of elements in ! * the two lists are <i>equal</i>. (Two elements {@code e1} and ! * {@code e2} are <i>equal</i> if {@code (e1==null ? e2==null : ! * e1.equals(e2))}.) In other words, two lists are defined to be * equal if they contain the same elements in the same order. This * definition ensures that the equals method works properly across ! * different implementations of the {@code List} interface. * * @param o the object to be compared for equality with this list ! * @return {@code true} if the specified object is equal to this list */ boolean equals(Object o); /** * Returns the hash code value for this list. The hash code of a list
*** 517,529 **** * <pre>{@code * int hashCode = 1; * for (E e : list) * hashCode = 31*hashCode + (e==null ? 0 : e.hashCode()); * }</pre> ! * This ensures that <tt>list1.equals(list2)</tt> implies that ! * <tt>list1.hashCode()==list2.hashCode()</tt> for any two lists, ! * <tt>list1</tt> and <tt>list2</tt>, as required by the general * contract of {@link Object#hashCode}. * * @return the hash code value for this list * @see Object#equals(Object) * @see #equals(Object) --- 517,529 ---- * <pre>{@code * int hashCode = 1; * for (E e : list) * hashCode = 31*hashCode + (e==null ? 0 : e.hashCode()); * }</pre> ! * This ensures that {@code list1.equals(list2)} implies that ! * {@code list1.hashCode()==list2.hashCode()} for any two lists, ! * {@code list1} and {@code list2}, as required by the general * contract of {@link Object#hashCode}. * * @return the hash code value for this list * @see Object#equals(Object) * @see #equals(Object)
*** 537,567 **** * Returns the element at the specified position in this list. * * @param index index of the element to return * @return the element at the specified position in this list * @throws IndexOutOfBoundsException if the index is out of range ! * (<tt>index &lt; 0 || index &gt;= size()</tt>) */ E get(int index); /** * Replaces the element at the specified position in this list with the * specified element (optional operation). * * @param index index of the element to replace * @param element element to be stored at the specified position * @return the element previously at the specified position ! * @throws UnsupportedOperationException if the <tt>set</tt> operation * is not supported by this list * @throws ClassCastException if the class of the specified element * prevents it from being added to this list * @throws NullPointerException if the specified element is null and * this list does not permit null elements * @throws IllegalArgumentException if some property of the specified * element prevents it from being added to this list * @throws IndexOutOfBoundsException if the index is out of range ! * (<tt>index &lt; 0 || index &gt;= size()</tt>) */ E set(int index, E element); /** * Inserts the specified element at the specified position in this list --- 537,567 ---- * Returns the element at the specified position in this list. * * @param index index of the element to return * @return the element at the specified position in this list * @throws IndexOutOfBoundsException if the index is out of range ! * ({@code index < 0 || index >= size()}) */ E get(int index); /** * Replaces the element at the specified position in this list with the * specified element (optional operation). * * @param index index of the element to replace * @param element element to be stored at the specified position * @return the element previously at the specified position ! * @throws UnsupportedOperationException if the {@code set} operation * is not supported by this list * @throws ClassCastException if the class of the specified element * prevents it from being added to this list * @throws NullPointerException if the specified element is null and * this list does not permit null elements * @throws IllegalArgumentException if some property of the specified * element prevents it from being added to this list * @throws IndexOutOfBoundsException if the index is out of range ! * ({@code index < 0 || index >= size()}) */ E set(int index, E element); /** * Inserts the specified element at the specified position in this list
*** 569,588 **** * (if any) and any subsequent elements to the right (adds one to their * indices). * * @param index index at which the specified element is to be inserted * @param element element to be inserted ! * @throws UnsupportedOperationException if the <tt>add</tt> operation * is not supported by this list * @throws ClassCastException if the class of the specified element * prevents it from being added to this list * @throws NullPointerException if the specified element is null and * this list does not permit null elements * @throws IllegalArgumentException if some property of the specified * element prevents it from being added to this list * @throws IndexOutOfBoundsException if the index is out of range ! * (<tt>index &lt; 0 || index &gt; size()</tt>) */ void add(int index, E element); /** * Removes the element at the specified position in this list (optional --- 569,588 ---- * (if any) and any subsequent elements to the right (adds one to their * indices). * * @param index index at which the specified element is to be inserted * @param element element to be inserted ! * @throws UnsupportedOperationException if the {@code add} operation * is not supported by this list * @throws ClassCastException if the class of the specified element * prevents it from being added to this list * @throws NullPointerException if the specified element is null and * this list does not permit null elements * @throws IllegalArgumentException if some property of the specified * element prevents it from being added to this list * @throws IndexOutOfBoundsException if the index is out of range ! * ({@code index < 0 || index > size()}) */ void add(int index, E element); /** * Removes the element at the specified position in this list (optional
*** 590,614 **** * from their indices). Returns the element that was removed from the * list. * * @param index the index of the element to be removed * @return the element previously at the specified position ! * @throws UnsupportedOperationException if the <tt>remove</tt> operation * is not supported by this list * @throws IndexOutOfBoundsException if the index is out of range ! * (<tt>index &lt; 0 || index &gt;= size()</tt>) */ E remove(int index); // Search Operations /** * Returns the index of the first occurrence of the specified element * in this list, or -1 if this list does not contain the element. ! * More formally, returns the lowest index <tt>i</tt> such that ! * <tt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))</tt>, * or -1 if there is no such index. * * @param o element to search for * @return the index of the first occurrence of the specified element in * this list, or -1 if this list does not contain the element --- 590,614 ---- * from their indices). Returns the element that was removed from the * list. * * @param index the index of the element to be removed * @return the element previously at the specified position ! * @throws UnsupportedOperationException if the {@code remove} operation * is not supported by this list * @throws IndexOutOfBoundsException if the index is out of range ! * ({@code index < 0 || index >= size()}) */ E remove(int index); // Search Operations /** * Returns the index of the first occurrence of the specified element * in this list, or -1 if this list does not contain the element. ! * More formally, returns the lowest index {@code i} such that ! * <code>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))</code>, * or -1 if there is no such index. * * @param o element to search for * @return the index of the first occurrence of the specified element in * this list, or -1 if this list does not contain the element
*** 622,633 **** int indexOf(Object o); /** * Returns the index of the last occurrence of the specified element * in this list, or -1 if this list does not contain the element. ! * More formally, returns the highest index <tt>i</tt> such that ! * <tt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))</tt>, * or -1 if there is no such index. * * @param o element to search for * @return the index of the last occurrence of the specified element in * this list, or -1 if this list does not contain the element --- 622,633 ---- int indexOf(Object o); /** * Returns the index of the last occurrence of the specified element * in this list, or -1 if this list does not contain the element. ! * More formally, returns the highest index {@code i} such that ! * <code>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))</code>, * or -1 if there is no such index. * * @param o element to search for * @return the index of the last occurrence of the specified element in * this list, or -1 if this list does not contain the element
*** 671,682 **** // View /** * Returns a view of the portion of this list between the specified ! * <tt>fromIndex</tt>, inclusive, and <tt>toIndex</tt>, exclusive. (If ! * <tt>fromIndex</tt> and <tt>toIndex</tt> are equal, the returned list is * empty.) The returned list is backed by this list, so non-structural * changes in the returned list are reflected in this list, and vice-versa. * The returned list supports all of the optional list operations supported * by this list.<p> * --- 671,682 ---- // View /** * Returns a view of the portion of this list between the specified ! * {@code fromIndex}, inclusive, and {@code toIndex}, exclusive. (If ! * {@code fromIndex} and {@code toIndex} are equal, the returned list is * empty.) The returned list is backed by this list, so non-structural * changes in the returned list are reflected in this list, and vice-versa. * The returned list supports all of the optional list operations supported * by this list.<p> *
*** 686,698 **** * instead of a whole list. For example, the following idiom * removes a range of elements from a list: * <pre>{@code * list.subList(from, to).clear(); * }</pre> ! * Similar idioms may be constructed for <tt>indexOf</tt> and ! * <tt>lastIndexOf</tt>, and all of the algorithms in the ! * <tt>Collections</tt> class can be applied to a subList.<p> * * The semantics of the list returned by this method become undefined if * the backing list (i.e., this list) is <i>structurally modified</i> in * any way other than via the returned list. (Structural modifications are * those that change the size of this list, or otherwise perturb it in such --- 686,698 ---- * instead of a whole list. For example, the following idiom * removes a range of elements from a list: * <pre>{@code * list.subList(from, to).clear(); * }</pre> ! * Similar idioms may be constructed for {@code indexOf} and ! * {@code lastIndexOf}, and all of the algorithms in the ! * {@code Collections} class can be applied to a subList.<p> * * The semantics of the list returned by this method become undefined if * the backing list (i.e., this list) is <i>structurally modified</i> in * any way other than via the returned list. (Structural modifications are * those that change the size of this list, or otherwise perturb it in such
*** 700,711 **** * * @param fromIndex low endpoint (inclusive) of the subList * @param toIndex high endpoint (exclusive) of the subList * @return a view of the specified range within this list * @throws IndexOutOfBoundsException for an illegal endpoint index value ! * (<tt>fromIndex &lt; 0 || toIndex &gt; size || ! * fromIndex &gt; toIndex</tt>) */ List<E> subList(int fromIndex, int toIndex); /** * Creates a {@link Spliterator} over the elements in this list. --- 700,711 ---- * * @param fromIndex low endpoint (inclusive) of the subList * @param toIndex high endpoint (exclusive) of the subList * @return a view of the specified range within this list * @throws IndexOutOfBoundsException for an illegal endpoint index value ! * ({@code fromIndex < 0 || toIndex > size || ! * fromIndex > toIndex}) */ List<E> subList(int fromIndex, int toIndex); /** * Creates a {@link Spliterator} over the elements in this list.
< prev index next >