All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class com.sun.java.util.collections.ArrayList

java.lang.Object
   |
   +----com.sun.java.util.collections.AbstractCollection
           |
           +----com.sun.java.util.collections.AbstractList
                   |
                   +----com.sun.java.util.collections.ArrayList

public class ArrayList
extends AbstractList
implements List, Cloneable, Serializable
Resizable-array implementation of the List interface. Implements all optional List operations, and permits all elements, including null. In addition to implementing the List interface, ArrayList provides methods to manipulate the size of the array that is used internally to store the List. (ArrayList is roughly equivalent to Vector, except that it is unsynchronized.)

The size, isEmpty, get, set, iterator, and listIterator operations run in constant time. The add() operation runs in constant time unless it causes the ArrayList to exceed its capacity, in which case it runs in linear time. All of the other operations run in linear time (roughly speaking). The constant factor is low compared to that for LinkedList.

Each ArrayList has a capacity. The capacity is the size of the array used to store the elements in the List. It is always at least as large as the List size. As elements are added an ArrayList, its capacity grows automatically. The details of the growth policy are not specified beyond the fact that adding an element to an ArrayList has constant amortized cost, that is, adding n elements requires O(n) time. An application can increase the capacity of an ArrayList before adding a large number of components using the ensureCapacity operation. This may reduce the amount of incremental reallocation.

Note that this implementation is not synchronized. If multiple threads access an ArrayList concurrently, and at least one of the threads modifies the ArrayList structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more elements, or explicitly resizes the backing array; merely setting the value of an element is not a structural modification.) This is typically accomplished by synchronizing on some object that naturally encapsulates the ArrayList. If no such object exists, the ArrayList should be "wrapped" using the Collections.synchronizedList method. This is best done at creation time, to prevent accidental unsynchronized access to the ArrayList:

	List list = Collections.synchronizedList(new ArrayList(...));
 

The Iterators returned by ArrayList's iterator and listIterator methods are fail-fast: if the ArrayList is structurally modified at any time after the Iterator is created, in any way except through the Iterator's own remove or add methods, the Iterator will throw a ConcurrentModificationException. Thus, in the face of concurrent modification, the Iterator fails quickly and cleanly, rather than risking arbitrary, non-deterministic behavior at an undetermined time in the future.

See Also:
Collection, List, LinkedList, Vector, synchronizedList

Constructor Index

 o ArrayList()
Constructs an empty ArrayList.
 o ArrayList(Collection)
Constructs an ArrayList containing the elements of the specified Collection, in the order they are returned by the Collection's iterator.
 o ArrayList(int)
Constructs an empty ArrayList with the specified initial capacity.

Method Index

 o add(int, Object)
Inserts the specified element at the specified position in this ArrayList.
 o add(Object)
Appends the specified element to the end of this ArrayList.
 o addAll(Collection)
Appends all of the elements in the specified Collection to the end of this this ArrayList, in the order that they are returned by the specified Collection's Iterator.
 o addAll(int, Collection)
Inserts all of the elements in the specified Collection into this ArrayList, starting at the specified position.
 o clear()
Removes all of the elements from this ArrayList.
 o clone()
Returns a shallow copy of this ArrayList.
 o contains(Object)
Returns true if this ArrayList contains the specified element.
 o ensureCapacity(int)
Increases the capacity of this ArrayList, if necessary, to ensure that it can hold at least the number of components specified by the minimum capacity argument.
 o get(int)
Returns the element at the specified position in this ArrayList.
 o indexOf(Object)
Searches for the first occurence of the given argument, testing for equality using the equals method.
 o isEmpty()
Tests if this ArrayList has no components.
 o lastIndexOf(Object)
Returns the index of the last occurrence of the specified object in this ArrayList.
 o remove(int)
Removes the element at the specified position in this ArrayList.
 o set(int, Object)
Replaces the element at the specified position in this ArrayList with the specified element.
 o size()
Returns the number of components in this ArrayList.
 o toArray()
Returns an array containing all of the elements in this ArrayList in the correct order.
 o toArray(Object[])
Returns an array containing all of the elements in this ArrayList in the correct order.
 o trimToSize()
Trims the capacity of this ArrayList to be the ArrayList's current size.

Constructors

 o ArrayList
 public ArrayList(int initialCapacity)
Constructs an empty ArrayList with the specified initial capacity.

Parameters:
initialCapacity - the initial capacity of the ArrayList.
 o ArrayList
 public ArrayList()
Constructs an empty ArrayList.

 o ArrayList
 public ArrayList(Collection c)
Constructs an ArrayList containing the elements of the specified Collection, in the order they are returned by the Collection's iterator. The ArrayList has initial capacity of 110% the size of the specified Collection.

Methods

 o trimToSize
 public void trimToSize()
Trims the capacity of this ArrayList to be the ArrayList's current size. An application can use this operation to minimize the storage of an ArrayList.

 o ensureCapacity
 public void ensureCapacity(int minCapacity)
Increases the capacity of this ArrayList, if necessary, to ensure that it can hold at least the number of components specified by the minimum capacity argument.

Parameters:
minCapacity - the desired minimum capacity.
 o size
 public int size()
Returns the number of components in this ArrayList.

Returns:
the number of components in this ArrayList.
Overrides:
size in class AbstractCollection
 o isEmpty
 public boolean isEmpty()
Tests if this ArrayList has no components.

Returns:
true if this ArrayList has no components; false otherwise.
Overrides:
isEmpty in class AbstractCollection
 o contains
 public boolean contains(Object elem)
Returns true if this ArrayList contains the specified element.

Parameters:
o - element whose presence in this List is to be tested.
Overrides:
contains in class AbstractCollection
 o indexOf
 public int indexOf(Object elem)
Searches for the first occurence of the given argument, testing for equality using the equals method.

Parameters:
elem - an object.
Returns:
the index of the first occurrence of the argument in this ArrayList; returns -1 if the object is not found.
Overrides:
indexOf in class AbstractList
See Also:
equals
 o lastIndexOf
 public int lastIndexOf(Object elem)
Returns the index of the last occurrence of the specified object in this ArrayList.

Parameters:
elem - the desired component.
Returns:
the index of the last occurrence of the specified object in this ArrayList; returns -1 if the object is not found.
Overrides:
lastIndexOf in class AbstractList
 o clone
 public Object clone()
Returns a shallow copy of this ArrayList. (The elements themselves are not copied.)

Returns:
a clone of this ArrayList.
Overrides:
clone in class Object
 o toArray
 public Object[] toArray()
Returns an array containing all of the elements in this ArrayList in the correct order.

Returns:
an array containing all of the elements in this ArrayList in the correct order.
Overrides:
toArray in class AbstractCollection
 o toArray
 public Object[] toArray(Object a[])
Returns an array containing all of the elements in this ArrayList in the correct order. The runtime type of the returned array is that of the specified array. If the ArrayList fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this ArrayList.

If the ArrayList fits in the specified array with room to spare (i.e., the array has more elements than the ArrayList), the element in the array immediately following the end of the collection is set to null. This is useful in determining the length of the ArrayList only if the caller knows that the ArrayList does not contain any null elements.

Parameters:
a - the array into which the elements of the ArrayList are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose.
Returns:
an array containing the elements of the ArrayList.
Throws: ArrayStoreException
the runtime type of a is not a supertype of the runtime type of every element in this ArrayList.
Overrides:
toArray in class AbstractCollection
 o get
 public Object get(int index)
Returns the element at the specified position in this ArrayList.

Parameters:
index - index of element to return.
Returns:
the element at the specified position in this ArrayList.
Throws: IndexOutOfBoundsException
index is out of range (index < 0 || index >= size()).
Overrides:
get in class AbstractList
 o set
 public Object set(int index,
                   Object element)
Replaces the element at the specified position in this ArrayList with the specified element.

Parameters:
index - index of element to replace.
element - element to be stored at the specified position.
Returns:
the element previously at the specified position.
Throws: IndexOutOfBoundsException
index out of range (index < 0 || index >= size()).
Overrides:
set in class AbstractList
 o add
 public boolean add(Object o)
Appends the specified element to the end of this ArrayList.

Parameters:
o - element to be appended to this ArrayList.
Returns:
true (as per the general contract of Collection.add).
Overrides:
add in class AbstractList
 o add
 public void add(int index,
                 Object element)
Inserts the specified element at the specified position in this ArrayList. Shifts the element currently at that position (if any) and any subsequent elements to the right (adds one to their indices).

Parameters:
index - index at which the specified element is to be inserted.
element - element to be inserted.
Throws: IndexOutOfBoundsException
index is out of range (index < 0 || index > size()).
Overrides:
add in class AbstractList
 o remove
 public Object remove(int index)
Removes the element at the specified position in this ArrayList. Shifts any subsequent elements to the left (subtracts one from their indices).

Parameters:
index - the index of the element to removed.
Returns:
the element that was removed from the ArrayList.
Throws: IndexOutOfBoundsException
index out of range (index < 0 || index >= size()).
Overrides:
remove in class AbstractList
 o clear
 public void clear()
Removes all of the elements from this ArrayList. The ArrayList will be empty after this call returns.

Overrides:
clear in class AbstractCollection
 o addAll
 public boolean addAll(Collection c)
Appends all of the elements in the specified Collection to the end of this this ArrayList, in the order that they are returned by the specified Collection's Iterator. The behavior of this operation is undefined if the specified Collection is modified while the operation is in progress. (This implies that the behavior of this call is undefined if the the specified Collection is this ArrayList, and this ArrayList is nonempty.)

Parameters:
index - index at which to insert first element from the specified collection.
c - elements to be inserted into this ArrayList.
Throws: IndexOutOfBoundsException
index out of range (index < 0 || index > size()).
Overrides:
addAll in class AbstractCollection
 o addAll
 public boolean addAll(int index,
                       Collection c)
Inserts all of the elements in the specified Collection into this ArrayList, starting at the specified position. Shifts the element currently at that position (if any) and any subsequent elements to the right (increases their indices). The new elements will appear in the ArrayList in the order that they are returned by the specified Collection's iterator.

Parameters:
index - index at which to insert first element from the specified collection.
c - elements to be inserted into this ArrayList.
Throws: IndexOutOfBoundsException
index out of range (index < 0 || index > size()).
Overrides:
addAll in class AbstractList

All Packages  Class Hierarchy  This Package  Previous  Next  Index