JavaTM Platform
Standard Ed. 6

java.util
클래스 ArrayList<E>

java.lang.Object 
  상위를 확장 java.util.AbstractCollection <E>
      상위를 확장 java.util.AbstractList <E>
          상위를 확장 java.util.ArrayList<E>
모든 구현된 인터페이스:
Serializable , Cloneable , Iterable <E>, Collection <E>, List <E>, RandomAccess
직계의 기존의 서브 클래스:
AttributeList , RoleList , RoleUnresolvedList


public class ArrayList<E>
extends AbstractList <E>
implements List <E>, RandomAccess , Cloneable , Serializable

List 인터페이스의 사이즈 변경 가능한 배열의 구현입니다. 리스트의 임의의 오퍼레이션을 모두 구현해,null 를 포함한 모든 요소를 허용 합니다. 이 클래스는,List 인터페이스를 구현하는 것 외에 리스트를 포함하기 위해서 내부적으로 사용되는 배열의 사이즈를 조작하는 메소드를 제공합니다 (이 클래스는, 동기화 되지 않는 것을 제외해 Vector 와 거의 동등).

size,isEmpty,get,set,iterator, 및 listIterator 의 처리는, 일정한 시간에 실행됩니다. add 의 처리도, 일정한 상각 시간에 실행됩니다. 즉, n 개의 요소를 추가하려면 O(n) 시간이 필요합니다. 대부분의 경우, 다른 모든 처리도 비례적인 시간에 실행됩니다. 정수의 계수는,LinkedList 의 구현의 경우보다 작아집니다.

ArrayList 의 인스턴스에는, 「사이즈」가 있습니다. 그것은, 리스트의 요소를 포함하기 위해서 사용하는 배열의 사이즈로, 항상 리스트의 사이즈 이상의 크기가 됩니다. ArrayList 에 요소를 추가하면(자), 그 사이즈는 자동적으로 확대합니다. 확대의 정책에 대해서는, 요소를 추가하면(자) 「일정한 상각 시간 코스트」가 수반하는 것 이외는, 자세하게는 지정되고 있지 않습니다.

어플리케이션에서는,ensureCapacity 를 사용해 ArrayList 의 인스턴스의 사이즈를 확대하고 나서, 많은 요소를 추가할 수 있습니다. 이것에 의해, 증가에 대한 재할인 맞히고가 경감되는 경우가 있습니다.

이 구현은 동기화 되지 않습니다. 복수의 thread가 동시에 ArrayList 의 인스턴스에 액세스 해, 1 개(살) 이상의 thread가 구조적으로 리스트를 변경하는 경우에는, 리스트를 외부적으로 동기화할 필요가 있습니다. 구조적인 변경이란, 1 개(살) 이상의 요소를 추가 또는 삭제하거나 기본으로 되는 배열의 사이즈를 명시적으로 변경하거나 하는 처리입니다. 요소의 값만을 설정하는 처리는, 구조적인 변경이 아닙니다. 일반적으로, 리스트의 동기를 잡으려면 , 리스트를 자연스럽게 캡슐화하는 객체로 동기를 잡습니다. 이런 종류의 객체가 없는 경우에는,Collections.synchronizedList 메소드를 사용해 리스트를 「랩」할 필요가 있습니다. 이것은, 리스트에의 우발적인 비동기 액세스를 막기 위해서(때문에), 작성시에 실시하는 것이 최적입니다.

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

이 클래스의 iteratorlistIterator 메소드에 의해 반환되는 반복자는, 「fail-fast」입니다. 반복자의 작성 후에, 반복자 자체의 remove 또는 add 메소드 이외 방법으로 리스트가 구조적으로 변경되면(자), 반복자는 ConcurrentModificationException 를 throw 합니다. 이와 같이, 병행해 변경을 하면(자), 반복자는, 장래의 예측할 수 없는 시점에 있어 예측할 수 없는 동작이 발생하는 위험을 회피하기 위해서, 즉시 한편 솜씨 자주(잘) 예외를 throw 합니다.

일반적으로, 비동기의 병행 변경이 있는 경우, 확실한 보증을 실시하는 것은 불가능해서, 반복자의 fail-fast의 동작을 보증할 수 없습니다. fail-fast 반복자는 최선 노력 원칙에 근거해,ConcurrentModificationException 를 throw 합니다. 따라서, 정확을 기하기 위해서 이 예외에 의존하는 프로그램을 쓰는 것은 잘못입니다. 「반복자의 fail-fast의 동작은 버그를 검출하기 위해서 사용해야 합니다」

이 클래스는,Java Collections Framework 의 멤버입니다.

도입된 버젼:
1.2
관련 항목:
Collection , List , LinkedList , Vector , 직렬화 된 형식

필드의 개요
 
클래스 java.util. AbstractList 로부터 상속된 필드
modCount
 
생성자 의 개요
ArrayList ()
          초기 용량 10 으로 빈 상태(empty)의 리스트를 작성합니다.
ArrayList (Collection <? extends E > c)
          지정된 컬렉션의 요소가 포함되어 있는 리스트를, 요소가 컬렉션의 반복자에 의해 반환되는 순서로 작성합니다.
ArrayList (int initialCapacity)
          지정된 초기 사이즈로 빈 상태(empty)의 리스트를 작성합니다.
 
메소드의 개요
 boolean add (E  e)
          리스트의 마지막으로, 지정된 요소를 추가합니다.
 void add (int index, E  element)
          리스트내의 지정된 위치로 지정된 요소를 삽입합니다.
 boolean addAll (Collection <? extends E > c)
          지정된 컬렉션내의 모든 요소를, 지정된 컬렉션의 반복자에 의해 반환되는 순서로 리스트의 마지막에 추가합니다.
 boolean addAll (int index, Collection <? extends E > c)
          지정된 컬렉션내의 모든 요소를, 리스트의 지정된 위치에 삽입합니다.
 void clear ()
          리스트로부터 모든 요소를 삭제합니다.
 Object clone ()
          ArrayList 의 인스턴스의 shallow 복사를 돌려줍니다.
 boolean contains (Object  o)
          리스트로 지정된 요소가 있는 경우에 true 를 돌려줍니다.
 void ensureCapacity (int minCapacity)
          필요에 따라서, 이 ArrayList 의 인스턴스의 사이즈를 확대해, 적어도 최소 사이즈 인수로 지정된 수의 요소를 포함할 수 있도록(듯이) 합니다.
 E get (int index)
          리스트내의 지정된 위치에 있는 요소를 돌려줍니다.
 int indexOf (Object  o)
          지정된 요소가 리스트내에서 최초로 검출된 위치의 인덱스를 돌려줍니다.
 boolean isEmpty ()
          리스트에 요소가 없는 경우에 true 를 돌려줍니다.
 int lastIndexOf (Object  o)
          지정된 요소가 리스트내에서 마지막에 검출된 위치의 인덱스를 돌려줍니다.
 E remove (int index)
          리스트의 지정된 위치에 있는 요소를 삭제합니다.
 boolean remove (Object  o)
          존재하는 경우는, 최초로 검출된 지정 요소를 이 리스트로부터 삭제합니다.
protected  void removeRange (int fromIndex, int toIndex)
          이 리스트로부터,fromIndex 로 시작되어,toIndex 의 직전에 끝나는 인덱스를 가지는 모든 요소를 삭제합니다.
 E set (int index, E  element)
          리스트의 지정된 위치에 있는 요소를, 지정된 요소로 옮겨놓습니다.
 int size ()
          리스트내에 있는 요소의 수를 돌려줍니다.
 Object [] toArray ()
          리스트내의 모든 요소를 적절한 순서 (최초의 요소로부터 마지막 요소에)로 포함하고 있는 배열을 돌려줍니다.
<T> T[]
toArray (T[] a)
          리스트내의 모든 요소를 적절한 순서 (최초의 요소로부터 마지막 요소에)로 포함하고 있는 배열을 돌려줍니다.
 void trimToSize ()
          이 ArrayList 의 인스턴스의 사이즈를 리스트의 현재의 사이즈에 축소합니다.
 
클래스 java.util. AbstractList 로부터 상속된 메소드
equals , hashCode , iterator , listIterator , listIterator , subList
 
클래스 java.util. AbstractCollection 로부터 상속된 메소드
containsAll , removeAll , retainAll , toString
 
클래스 java.lang. Object 로부터 상속된 메소드
finalize , getClass , notify , notifyAll , wait , wait , wait
 
인터페이스 java.util. List 로부터 상속된 메소드
containsAll , equals , hashCode , iterator , listIterator , listIterator , removeAll , retainAll , subList
 

생성자 의 상세

ArrayList

public ArrayList(int initialCapacity)
지정된 초기 사이즈로 빈 상태(empty)의 리스트를 작성합니다.

파라미터:
initialCapacity - 리스트의 초기 용량
예외:
IllegalArgumentException - 지정된 초기 용량이 부의 경우

ArrayList

public ArrayList()
초기 용량 10 으로 빈 상태(empty)의 리스트를 작성합니다.


ArrayList

public ArrayList(Collection <?  extends E > c)
지정된 컬렉션의 요소가 포함되어 있는 리스트를, 요소가 컬렉션의 반복자에 의해 반환되는 순서로 작성합니다.

파라미터:
c - 요소가 리스트에 배치되는 컬렉션
예외:
NullPointerException - 지정된 컬렉션이 null 인 경우
메소드의 상세

trimToSize

public void trimToSize()
ArrayList 의 인스턴스의 사이즈를 리스트의 현재의 사이즈에 축소합니다. 어플리케이션에서는, 이 오퍼레이션으로 ArrayList 의 인스턴스의 포함 사이즈를 최소로 할 수 있습니다.


ensureCapacity

public void ensureCapacity(int minCapacity)
필요에 따라서, 이 ArrayList 의 인스턴스의 사이즈를 확대해, 적어도 최소 사이즈 인수로 지정된 수의 요소를 포함할 수 있도록(듯이) 합니다.

파라미터:
minCapacity - 목적의 최소 용량

size

public int size()
리스트내에 있는 요소의 수를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 size
정의:
인터페이스 List <E > 내의 size
정의:
클래스 AbstractCollection <E > 내의 size
반환값:
리스트내의 요소수

isEmpty

public boolean isEmpty()
리스트에 요소가 없는 경우에 true 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 isEmpty
정의:
인터페이스 List <E > 내의 isEmpty
오버라이드(override):
클래스 AbstractCollection <E > 내의 isEmpty
반환값:
리스트가 요소를 1 개나 보관 유지하고 있지 않는 경우는 true

contains

public boolean contains(Object  o)
리스트로 지정된 요소가 있는 경우에 true 를 돌려줍니다. 즉, 리스트에,(o==null ?  e==null : o.equals(e)) 가 되는 요소 e 가 1 개 이상 포함되어 있는 경우에만 true 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 contains
정의:
인터페이스 List <E > 내의 contains
오버라이드(override):
클래스 AbstractCollection <E > 내의 contains
파라미터:
o - 리스트에 있을지 어떨지를 조사하는 요소
반환값:
리스트가, 지정된 요소를 보관 유지하고 있는 경우는 true

indexOf

public int indexOf(Object  o)
지정된 요소가 리스트내에서 최초로 검출된 위치의 인덱스를 돌려줍니다. 지정된 요소가 이 리스트에 없는 경우는 -1 을 돌려줍니다. 즉,(o==null ?  get(i) ==null : o.equals(get(i))) 를 채우는 최소의 인덱스치 i 를 돌려줍니다. 이러한 인덱스가 없는 경우는,-1 을 돌려줍니다.

정의:
인터페이스 List <E > 내의 indexOf
오버라이드(override):
클래스 AbstractList <E > 내의 indexOf
파라미터:
o - 검색하는 요소
반환값:
지정된 요소가 리스트내에서 최초로 검출된 위치의 인덱스. 그 요소가 리스트에 없는 경우는 -1

lastIndexOf

public int lastIndexOf(Object  o)
지정된 요소가 리스트내에서 마지막에 검출된 위치의 인덱스를 돌려줍니다. 지정된 요소가 이 리스트에 없는 경우는 -1 을 돌려줍니다. 즉,(o==null ?  get(i) ==null : o.equals(get(i))) 를 채우는 최대의 인덱스치 i 를 돌려줍니다. 이러한 인덱스가 없는 경우는,-1 을 돌려줍니다.

정의:
인터페이스 List <E > 내의 lastIndexOf
오버라이드(override):
클래스 AbstractList <E > 내의 lastIndexOf
파라미터:
o - 검색하는 요소
반환값:
지정된 요소가 리스트내에서 마지막에 검출된 위치의 인덱스. 그 요소가 리스트에 없는 경우는 -1

clone

public Object  clone()
ArrayList 의 인스턴스의 shallow 복사를 돌려줍니다. 요소 자체는 카피되지 않습니다.

오버라이드(override):
클래스 Object 내의 clone
반환값:
ArrayList 의 인스턴스의 복제
관련 항목:
Cloneable

toArray

public Object [] toArray()
리스트내의 모든 요소를 적절한 순서 (최초의 요소로부터 마지막 요소에)로 포함하고 있는 배열을 돌려줍니다.

반환되는 배열에의 참조를 리스트가 유지하지 않는다고 하는 점으로써, 이 배열은 안전합니다. 즉, 이 메소드는 새로운 배열을 할당할 필요가 있습니다. 이 때문에, 호출측은, 반환된 배열을 자유롭게 변경할 수 있습니다.

메소드는, 배열 베이스의 API 와 컬렉션 베이스의 API 의 사이의 중개역으로서 기능합니다.

정의:
인터페이스 Collection <E > 내의 toArray
정의:
인터페이스 List <E > 내의 toArray
오버라이드(override):
클래스 AbstractCollection <E > 내의 toArray
반환값:
리스트내의 모든 요소를 적절한 순서로 포함하고 있는 배열
관련 항목:
Arrays.asList(Object[])

toArray

public <T> T[] toArray(T[] a)
리스트내의 모든 요소를 적절한 순서 (최초의 요소로부터 마지막 요소에)로 포함하고 있는 배열을 돌려줍니다. 반환되는 배열의 실행시의 형태는, 지정된 배열의 형태가 됩니다. 지정된 배열에 리스트가 들어가는 경우는, 그 배열에 돌려주어집니다. 그 이외의 경우는, 지정된 배열의 실행시의 형태와 리스트의 사이즈를 사용해 새로운 배열을 할당할 수 있습니다.

지정된 배열에 리스트가 들어가, 그 배열에 한층 더 여분의 영역이 있는 경우, 즉 배열에 리스트보다 많은 요소가 있는 경우, 배열로 컬렉션의 말미에 계속되는 요소는 null 로 설정됩니다. 이것은, 호출측이 리스트에 null 요소가 포함되지 않은 것을 알고 있는 경우에는, 리스트의 길이를 판정하는데 이용할 수 있습니다.

정의:
인터페이스 Collection <E > 내의 toArray
정의:
인터페이스 List <E > 내의 toArray
오버라이드(override):
클래스 AbstractCollection <E > 내의 toArray
파라미터:
a - 배열이 충분한 크기를 가지는 경우는, 리스트의 요소가 포함되는 배열. 그렇지 않은 경우는, 요소를 포함하기 위해서 같은 실행시의 형태의 새로운 배열을 할당할 수 있다
반환값:
리스트의 요소가 포함되고 있는 배열
예외:
ArrayStoreException - 지정된 배열의 실행시의 형태가, 이 리스트내의 모든 요소의 실행시의 형태의 슈퍼타입이 아닌 경우
NullPointerException - 지정된 배열이 null 인 경우

get

public E  get(int index)
리스트내의 지정된 위치에 있는 요소를 돌려줍니다.

정의:
인터페이스 List <E > 내의 get
정의:
클래스 AbstractList <E > 내의 get
파라미터:
index - 반환되는 요소의 인덱스
반환값:
리스트내의 지정된 위치에 있는 요소
예외:
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())

set

public E  set(int index,
             E  element)
리스트의 지정된 위치에 있는 요소를, 지정된 요소로 옮겨놓습니다.

정의:
인터페이스 List <E > 내의 set
오버라이드(override):
클래스 AbstractList <E > 내의 set
파라미터:
index - 치환되는 요소의 인덱스
element - 지정된 위치에 포함되는 요소
반환값:
지정된 위치에 이전 있던 요소
예외:
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())

add

public boolean add(E  e)
리스트의 마지막으로, 지정된 요소를 추가합니다.

정의:
인터페이스 Collection <E > 내의 add
정의:
인터페이스 List <E > 내의 add
오버라이드(override):
클래스 AbstractList <E > 내의 add
파라미터:
e - 리스트에 추가되는 요소
반환값:
true (Collection.add(E) 로 지정되었을 경우와 같이)

add

public void add(int index,
                E  element)
리스트내의 지정된 위치로 지정된 요소를 삽입합니다. 그 위치와 그 이후에 요소가 있으면 그것들을 오른쪽으로 이동시켜, 각 요소의 인덱스에 1 을 더합니다.

정의:
인터페이스 List <E > 내의 add
오버라이드(override):
클래스 AbstractList <E > 내의 add
파라미터:
index - 지정의 요소가 삽입되는 위치의 인덱스
element - 삽입되는 요소
예외:
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())

remove

public E  remove(int index)
리스트의 지정된 위치에 있는 요소를 삭제합니다. 후속의 요소는 왼쪽으로 이동합니다 (인덱스치로부터 1 을 감산).

정의:
인터페이스 List <E > 내의 remove
오버라이드(override):
클래스 AbstractList <E > 내의 remove
파라미터:
index - 삭제되는 요소의 인덱스
반환값:
리스트로부터 삭제한 요소
예외:
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())

remove

public boolean remove(Object  o)
존재하는 경우는, 최초로 검출된 지정 요소를 이 리스트로부터 삭제합니다. 그 요소가 리스트에 없는 경우, 변경은 없습니다. 즉,(o==null ?  get(i) ==null : o.equals(get(i))) 가 되는, 최소의 인덱스치 i 를 가지는 요소가 존재하는 경우는, 그 요소를 삭제합니다. 지정된 요소가 이 리스트에 포함되어 있었을 경우, 즉, 호출의 결과로서 이 리스트가 변경되었을 경우에 true 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 remove
정의:
인터페이스 List <E > 내의 remove
오버라이드(override):
클래스 AbstractCollection <E > 내의 remove
파라미터:
o - 리스트로부터 삭제되는 요소 (그 요소가 존재하는 경우)
반환값:
리스트가, 지정된 요소를 보관 유지하고 있는 경우는 true

clear

public void clear()
리스트로부터 모든 요소를 삭제합니다. 이 호출이 돌아오면(자), 이 리스트는 비웁니다.

정의:
인터페이스 Collection <E > 내의 clear
정의:
인터페이스 List <E > 내의 clear
오버라이드(override):
클래스 AbstractList <E > 내의 clear

addAll

public boolean addAll(Collection <?  extends E > c)
지정된 컬렉션내의 모든 요소를, 지정된 컬렉션의 반복자에 의해 반환되는 순서로 리스트의 마지막에 추가합니다. 오퍼레이션의 진행중에, 지정된 컬렉션이 변경되었을 경우의, 이 오퍼레이션의 동작은 정의되고 있지 않습니다. 즉, 지정된 컬렉션이 이 리스트 자신이며, 리스트가 빈 상태(empty)이 아닌 경우, 이 호출의 동작은 보증되지 않습니다.

정의:
인터페이스 Collection <E > 내의 addAll
정의:
인터페이스 List <E > 내의 addAll
오버라이드(override):
클래스 AbstractCollection <E > 내의 addAll
파라미터:
c - 리스트에 추가되는 요소를 포함한 컬렉션
반환값:
이 호출의 결과, 이 리스트가 변경되었을 경우는 true
예외:
NullPointerException - 지정된 컬렉션이 null 인 경우
관련 항목:
AbstractCollection.add(Object)

addAll

public boolean addAll(int index,
                      Collection <?  extends E > c)
지정된 컬렉션내의 모든 요소를, 리스트의 지정된 위치에 삽입합니다. 그 위치와 그 이후에 요소가 있는 경우는, 그것들을 오른쪽으로 이동해, 각 요소의 인덱스에 1 을 더합니다. 새로운 요소는, 지정된 컬렉션의 반복자에 의해 반환되는 차례로 리스트에 삽입됩니다.

정의:
인터페이스 List <E > 내의 addAll
오버라이드(override):
클래스 AbstractList <E > 내의 addAll
파라미터:
index - 지정된 컬렉션으로부터 최초의 요소를 삽입하는 위치의 인덱스
c - 리스트에 추가되는 요소를 포함한 컬렉션
반환값:
이 호출의 결과, 이 리스트가 변경되었을 경우는 true
예외:
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())
NullPointerException - 지정된 컬렉션이 null 인 경우

removeRange

protected void removeRange(int fromIndex,
                           int toIndex)
이 리스트로부터,fromIndex 로 시작되어,toIndex 의 직전에 끝나는 인덱스를 가지는 모든 요소를 삭제합니다. 후속의 요소는 왼쪽으로 이동합니다 (인덱스치가 감소). 이 호출은,(toIndex - fromIndex) 의 요소수만큼 리스트를 단축합니다. toIndex==fromIndex 의 경우, 이 처리는 실행되지 않습니다.

오버라이드(override):
클래스 AbstractList <E > 내의 removeRange
파라미터:
fromIndex - 삭제하는 최초의 요소의 인덱스
toIndex - 삭제하는 마지막 요소의 직후의 인덱스
예외:
IndexOutOfBoundsException - fromIndex 또는 toIndex 가 범위외의 경우 (fromIndex < 0 || fromIndex >= size() || toIndex > size() || toIndex < fromIndex)

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.