|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 모든 클래스 | ||||||||||
개요: 상자 | 필드 | constructor | 메소드 | 상세: 필드 | constructor | 메소드 |
java.lang.Object | +--java.util.AbstractCollection | +--java.util.AbstractList | +--java.util.ArrayList
List 인터페이스의 사이즈 변경 가능한 배열의 구현입니다. 리스트의 임의의 오퍼레이션을 모두 구현해,null 를 포함한 모든 요소를 허용 합니다. 이 클래스는 List 인터페이스를 구현하는 것 외에 리스트를 저장하기 위해서 내부적으로 사용되는 배열의 사이즈를 조작하는 메소드를 제공합니다. (이 클래스는 동기화 되지 않는 것을 제외해 Vector 와 거의 동등합니다. )
size,isEmpty,get,set,iterator, 및 listIterator 의 처리는 일정한 시간에 실행됩니다. add 의 처리도, 일정한 상각 시간에 실행됩니다. 즉, n 개의 요소를 추가하려면 O(n) 시간이 필요합니다. 대부분의 경우, 다른 모든 처리도 비례적인 시간에 실행됩니다. 정수의 계수는 LinkedList 의 구현의 경우보다 작아집니다.
각 ArrayList 의 인스턴스에는 「사이즈」가 있습니다. 그것은 리스트의 요소를 저장하기 위해서 사용하는 배열의 사이즈로, 항상 리스트의 사이즈 이상의 크기가 됩니다. ArrayList 에 요소를 추가하면(자), 그 사이즈는 자동적으로 확대합니다. 확대의 폴리시에 대해서는 요소를 추가하면(자) 「일정한 상각 시간 코스트」가 수반하는 것 이외는 자세하게는 지정되고 있지 않습니다.
어플리케이션에서는 ensureCapacity 를 사용해 ArrayList 의 인스턴스의 사이즈를 확대하고 나서, 많은 요소를 추가할 수 있습니다. 이것에 의해, 증분에 대한 재할인 맞히고가 경감되는 경우가 있습니다.
이 구현은 동기화 되지 않는 점에 주의해 주세요. 복수의 thread가 동시에 ArrayList 의 인스턴스에 액세스 해, 1 kr 이상의 thread가 구조적으로 리스트를 변경하는 경우에는 리스트를 외부적으로 동기화할 필요가 있습니다. 구조적인 변경이란, 1 kr 이상의 요소를 추가 또는 삭제하거나 기본으로 되는 배열의 사이즈를 명시적으로 변경하거나 하는 처리입니다. 요소의 값만을 설정하는 처리는 구조적인 변경이 아닙니다. 통상, 리스트를 동기화하려면 , 리스트를 자연스럽게 캡슐화하는 오브젝트로 동기를 취합니다. 그러한 오브젝트가 없는 경우에는 Collections.synchronizedList 메소드를 사용해 리스트를 「랩」합니다. 이것은 리스트에의 불측의 비동기 액세스를 막기 위해서(때문에), 작성시에 실시하는 것이 최적입니다.
List list = Collections.synchronizedList(new ArrayList(...));
이 클래스의 iterator 및 listIterator 메소드에 의해 돌려주어지는 반복자는 「페이르파스트」입니다. 반복자의 작성 후에, 반복자 자체의 remove 또는 add 메소드 이외 방법으로 리스트를 구조적으로 변경하면(자), 반복자는 ConcurrentModificationException 를 슬로우 합니다. 따라서, 동시 변경을 하면(자), 반복자는 장래의 예측할 수 없는 시점에 있어 예측할 수 없는 동작이 발생하는 위험을 회피하기 위해서, 신속하게 한편 깨끗하게 실패합니다.
일반적으로, 비동기의 동시 변경이 있는 가운데 확실한 프로텍션하는 것은 불가능해서, 반복자의 페이르파스트 동작을 프로텍션할 수 없습니다.. 페이르파스트 반복자는 최선 노력 원칙에 근거해 ConcurrentModificationException 를 슬로우 합니다. 따라서, 정정하기 위해서 이 예외에 의존한 프로그램을 쓰는 것은 잘못입니다. 즉, 반복자의 페이르파스트 동작은 버그의 검출 (을) 위해서만 사용해야 합니다.
Collection
,
List
,
LinkedList
,
Vector
,
Collections.synchronizedList(List)
,
직렬화 된 형식 필드의 개요 |
클래스 java.util. AbstractList 에서 상속받은 필드 |
modCount |
생성자의 개요 | |
ArrayList ()
초기 용량 10 으로 하늘의 리스트를 작성합니다. |
|
ArrayList (Collection c)
지정된 콜렉션의 요소를 포함한 리스트를 작성합니다. |
|
ArrayList (int initialCapacity)
지정된 초기 사이즈로 하늘의 리스트를 작성합니다. |
메소드의 개요 | |
void |
add (int index,
Object element)
리스트의 지정된 위치에, 지정된 요소를 삽입합니다. |
boolean |
add (Object o)
리스트의 마지막으로, 지정된 요소를 추가합니다. |
boolean |
addAll (Collection c)
리스트의 말미에, 지정된 Collection 의 모든 요소를 추가합니다. |
boolean |
addAll (int index,
Collection c)
리스트내의 지정된 위치로부터, 지정된 Collection 의 모든 요소를 삽입합니다. |
void |
clear ()
리스트로부터 모든 요소를 삭제합니다. |
Object |
clone ()
ArrayList 의 인스턴스의 카피를 돌려줍니다. |
boolean |
contains (Object elem)
리스트로 지정의 요소가 있는 경우에 true 를 돌려줍니다. |
void |
ensureCapacity (int minCapacity)
필요에 따라서, 이 ArrayList 의 인스턴스의 사이즈를 확대해, 적어도 최소 사이즈 인수로 지정된 수의 요소를 저장할 수 있게 합니다. |
Object |
get (int index)
리스트내의 지정된 위치에 있는 요소를 돌려줍니다. |
int |
indexOf (Object elem)
equals 메소드를 사용해 동일한지 어떤지를 판정하면서, 지정된 인수와 같은 내용의 요소를 선두로부터 검색합니다. |
boolean |
isEmpty ()
리스트에 요소가 있는지 없는지를 판정합니다. |
int |
lastIndexOf (Object elem)
지정된 오브젝트가 리스트내에서 마지막에 나타나는 인덱스를 돌려줍니다. |
Object |
remove (int index)
리스트내의 지정된 위치로부터 요소를 삭제합니다. |
protected void |
removeRange (int fromIndex,
int toIndex)
이 List 로부터, fromIndex 에 시작해 toIndex 의 직전까지의 인덱스를 가지는 모든 요소를 삭제합니다. |
Object |
set (int index,
Object element)
리스트의 지정된 위치에 있는 요소를, 지정된 요소로 옮겨놓습니다. |
int |
size ()
리스트내에 있는 요소의 수를 돌려줍니다. |
Object [] |
toArray ()
리스트내의 모든 요소가 올바른 순서로 저장되고 있는 배열을 돌려줍니다. |
Object [] |
toArray (Object [] a)
리스트내의 모든 요소가 올바른 순서로 저장되고 있는 배열을 돌려줍니다. |
void |
trimToSize ()
이 ArrayList 의 인스턴스의 사이즈를 리스트의 현재의 사이즈에 축소합니다. |
클래스 java.util. AbstractList 에서 상속받은 메소드 |
equals , hashCode , iterator , listIterator , listIterator , subList |
클래스 java.util. AbstractCollection 에서 상속받은 메소드 |
containsAll , remove , removeAll , retainAll , toString |
클래스 java.lang. Object 에서 상속받은 메소드 |
finalize , getClass , notify , notifyAll , wait , wait , wait |
인터페이스 java.util. List 에서 상속받은 메소드 |
containsAll , equals , hashCode , iterator , listIterator , listIterator , remove , removeAll , retainAll , subList |
생성자의 상세 |
public ArrayList(int initialCapacity)
initialCapacity
- 리스트의 초기 용량
IllegalArgumentException
- 지정된 초기 용량이 부의 경우public ArrayList()
public ArrayList(Collection c)
c
- 요소가 리스트에 배치되는 콜렉션
NullPointerException
- 지정된 콜렉션이 null 인 경우메소드의 상세 |
public void trimToSize()
public void ensureCapacity(int minCapacity)
minCapacity
- 프로텍션하고 싶은 최소 용량public int size()
List
내의 size
AbstractCollection
내의 size
public boolean isEmpty()
List
내의 isEmpty
AbstractCollection
내의 isEmpty
public boolean contains(Object elem)
List
내의 contains
AbstractCollection
내의 contains
elem
- 리스트에 있을지 어떨지를 조사하는 요소
true
, 그렇지 않은 경우는 false
public int indexOf(Object elem)
List
내의 indexOf
AbstractList
내의 indexOf
elem
- 오브젝트
Object.equals(Object)
public int lastIndexOf(Object elem)
List
내의 lastIndexOf
AbstractList
내의 lastIndexOf
elem
- 목적의 요소
public Object clone()
Object
내의 clone
Cloneable
public Object [] toArray()
List
내의 toArray
AbstractCollection
내의 toArray
Arrays.asList(Object[])
public Object [] toArray(Object [] a)
지정된 배열에 리스트가 들어가, 그 배열에 한층 더 여분의 area가 있는 경우, 즉 배열에 리스트보다 많은 요소가 있는 경우, 배열로 콜렉션의 말미에 계속되는 요소는 null 로 설정됩니다. 이것은 리스트의 길이를 조사할 때 유용합니다. 다만 호출해 옆에서, 리스트에 null 요소가 없는 것을 알고 있는 경우에 한정합니다.
List
내의 toArray
AbstractCollection
내의 toArray
a
- 배열이 충분한 크기를 가지는 경우는 리스트의 요소가 저장되는 배열. 그렇지 않은 경우는 요소를 저장하기 위해서 같은 실행시의 형태의 새로운 배열을 할당할 수 있다
ArrayStoreException
- a 의 실행시의 형태가 리스트내의 각 요소의 실행시의 형태의 슈퍼 세트가 아닌 경우public Object get(int index)
List
내의 get
AbstractList
내의 get
index
- 돌려주어지는 요소의 인덱스
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index >= size())public Object set(int index, Object element)
List
내의 set
AbstractList
내의 set
index
- 치환되는 요소의 인덱스element
- 지정된 위치에 저장되는 요소
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index >= size())public boolean add(Object o)
List
내의 add
AbstractList
내의 add
o
- 리스트에 추가되는 요소
public void add(int index, Object element)
List
내의 add
AbstractList
내의 add
index
- 지정의 요소가 삽입되는 인덱스element
- 삽입되는 요소
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public Object remove(int index)
List
내의 remove
AbstractList
내의 remove
index
- 삭제되는 요소의 인덱스
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index >= size())public void clear()
List
내의 clear
AbstractList
내의 clear
public boolean addAll(Collection c)
List
내의 addAll
AbstractCollection
내의 addAll
c
- 리스트에 삽입하는 요소
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())
NullPointerException
- 지정된 콜렉션이 null 인 경우List.add(Object)
public boolean addAll(int index, Collection c)
List
내의 addAll
AbstractList
내의 addAll
index
- 지정된 콜렉션으로부터 최초의 요소를 삽입하는 위치의 인덱스c
- 리스트에 삽입되는 요소
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())
NullPointerException
- 지정된 콜렉션이 null 인 경우protected void removeRange(int fromIndex, int toIndex)
AbstractList
내의 removeRange
fromIndex
- 삭제하는 최초의 요소의 인덱스toIndex
- 삭제하는 마지막 요소의 직후의 인덱스
|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 모든 클래스 | ||||||||||
개요: 상자 | 필드 | constructor | 메소드 | 상세: 필드 | constructor | 메소드 |
Java, Java 2 D, 및 JDBC 는 미국 및 그 외의 나라에 있어서의 미국 Sun Microsystems, Inc. 의 상표 혹은 등록상표입니다.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.