|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.util.AbstractCollection <E>
java.util.AbstractList <E>
java.util.ArrayList<E>
public class ArrayList<E>
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(...));
이 클래스의 iterator 및 listIterator 메소드에 의해 반환되는 반복자는, 「fail-fast」입니다. 반복자의 작성 후에, 반복자 자체의 remove 또는 add 메소드 이외 방법으로 리스트가 구조적으로 변경되면(자), 반복자는 ConcurrentModificationException
를 throw 합니다. 이와 같이, 병행해 변경을 하면(자), 반복자는, 장래의 예측할 수 없는 시점에 있어 예측할 수 없는 동작이 발생하는 위험을 회피하기 위해서, 즉시 한편 솜씨 자주(잘) 예외를 throw 합니다.
일반적으로, 비동기의 병행 변경이 있는 경우, 확실한 보증을 실시하는 것은 불가능해서, 반복자의 fail-fast의 동작을 보증할 수 없습니다. fail-fast 반복자는 최선 노력 원칙에 근거해,ConcurrentModificationException 를 throw 합니다. 따라서, 정확을 기하기 위해서 이 예외에 의존하는 프로그램을 쓰는 것은 잘못입니다. 「반복자의 fail-fast의 동작은 버그를 검출하기 위해서 사용해야 합니다」
이 클래스는,Java Collections Framework 의 멤버입니다.
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 ()
리스트내의 모든 요소를 적절한 순서 (최초의 요소로부터 마지막 요소에)로 포함하고 있는 배열을 돌려줍니다. |
|
|
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 |
생성자 의 상세 |
---|
public ArrayList(int initialCapacity)
initialCapacity
- 리스트의 초기 용량
IllegalArgumentException
- 지정된 초기 용량이 부의 경우public ArrayList()
public ArrayList(Collection <? extends E > c)
c
- 요소가 리스트에 배치되는 컬렉션
NullPointerException
- 지정된 컬렉션이 null 인 경우메소드의 상세 |
---|
public void trimToSize()
public void ensureCapacity(int minCapacity)
minCapacity
- 목적의 최소 용량public int size()
Collection <E >
내의 size
List <E >
내의 size
AbstractCollection <E >
내의 size
public boolean isEmpty()
Collection <E >
내의 isEmpty
List <E >
내의 isEmpty
AbstractCollection <E >
내의 isEmpty
public boolean contains(Object o)
Collection <E >
내의 contains
List <E >
내의 contains
AbstractCollection <E >
내의 contains
o
- 리스트에 있을지 어떨지를 조사하는 요소
public int indexOf(Object o)
List <E >
내의 indexOf
AbstractList <E >
내의 indexOf
o
- 검색하는 요소
public int lastIndexOf(Object o)
List <E >
내의 lastIndexOf
AbstractList <E >
내의 lastIndexOf
o
- 검색하는 요소
public Object clone()
Object
내의 clone
Cloneable
public Object [] toArray()
반환되는 배열에의 참조를 리스트가 유지하지 않는다고 하는 점으로써, 이 배열은 안전합니다. 즉, 이 메소드는 새로운 배열을 할당할 필요가 있습니다. 이 때문에, 호출측은, 반환된 배열을 자유롭게 변경할 수 있습니다.
메소드는, 배열 베이스의 API 와 컬렉션 베이스의 API 의 사이의 중개역으로서 기능합니다.
Collection <E >
내의 toArray
List <E >
내의 toArray
AbstractCollection <E >
내의 toArray
Arrays.asList(Object[])
public <T> T[] toArray(T[] a)
지정된 배열에 리스트가 들어가, 그 배열에 한층 더 여분의 영역이 있는 경우, 즉 배열에 리스트보다 많은 요소가 있는 경우, 배열로 컬렉션의 말미에 계속되는 요소는 null 로 설정됩니다. 이것은, 호출측이 리스트에 null 요소가 포함되지 않은 것을 알고 있는 경우에는, 리스트의 길이를 판정하는데 이용할 수 있습니다.
Collection <E >
내의 toArray
List <E >
내의 toArray
AbstractCollection <E >
내의 toArray
a
- 배열이 충분한 크기를 가지는 경우는, 리스트의 요소가 포함되는 배열. 그렇지 않은 경우는, 요소를 포함하기 위해서 같은 실행시의 형태의 새로운 배열을 할당할 수 있다
ArrayStoreException
- 지정된 배열의 실행시의 형태가, 이 리스트내의 모든 요소의 실행시의 형태의 슈퍼타입이 아닌 경우
NullPointerException
- 지정된 배열이 null 인 경우public E get(int index)
List <E >
내의 get
AbstractList <E >
내의 get
index
- 반환되는 요소의 인덱스
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public E set(int index, E element)
List <E >
내의 set
AbstractList <E >
내의 set
index
- 치환되는 요소의 인덱스element
- 지정된 위치에 포함되는 요소
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public boolean add(E e)
Collection <E >
내의 add
List <E >
내의 add
AbstractList <E >
내의 add
e
- 리스트에 추가되는 요소
Collection.add(E)
로 지정되었을 경우와 같이)public void add(int index, E element)
List <E >
내의 add
AbstractList <E >
내의 add
index
- 지정의 요소가 삽입되는 위치의 인덱스element
- 삽입되는 요소
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public E remove(int index)
List <E >
내의 remove
AbstractList <E >
내의 remove
index
- 삭제되는 요소의 인덱스
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public boolean remove(Object o)
Collection <E >
내의 remove
List <E >
내의 remove
AbstractCollection <E >
내의 remove
o
- 리스트로부터 삭제되는 요소 (그 요소가 존재하는 경우)
public void clear()
Collection <E >
내의 clear
List <E >
내의 clear
AbstractList <E >
내의 clear
public boolean addAll(Collection <? extends E > c)
Collection <E >
내의 addAll
List <E >
내의 addAll
AbstractCollection <E >
내의 addAll
c
- 리스트에 추가되는 요소를 포함한 컬렉션
NullPointerException
- 지정된 컬렉션이 null 인 경우AbstractCollection.add(Object)
public boolean addAll(int index, Collection <? extends E > c)
List <E >
내의 addAll
AbstractList <E >
내의 addAll
index
- 지정된 컬렉션으로부터 최초의 요소를 삽입하는 위치의 인덱스c
- 리스트에 추가되는 요소를 포함한 컬렉션
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())
NullPointerException
- 지정된 컬렉션이 null 인 경우protected void removeRange(int fromIndex, int toIndex)
AbstractList <E >
내의 removeRange
fromIndex
- 삭제하는 최초의 요소의 인덱스toIndex
- 삭제하는 마지막 요소의 직후의 인덱스
IndexOutOfBoundsException
- fromIndex 또는 toIndex 가 범위외의 경우 (fromIndex < 0 || fromIndex >= size() || toIndex > size() || toIndex < fromIndex)
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.