|
http://www.maluchi.com/java/j2sdk-1_4_1-doc_ko/api/java/util/ArrayList.html
java.util
클래스
ArrayList
java.lang.Object | +--java.util.AbstractCollection | +--java.util.AbstractList | +--java.util.ArrayList
- 모든 구현 인터페이스:
- Cloneable , Collection , List , RandomAccess , Serializable
- public class ArrayList
- extends AbstractList
- implements List , 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 kr 이상의 thread가 구조적으로 리스트를 변경하는 경우에는 리스트를 외부적으로 동기화할 필요가 있습니다. 구조적인 변경이란, 1 kr 이상의 요소를 추가 또는 삭제하거나 기본으로 되는 배열의 사이즈를 명시적으로 변경하거나 하는 처리입니다. 요소의 값만을 설정하는 처리는 구조적인 변경이 아닙니다. 통상, 리스트를 동기화하려면 , 리스트를 자연스럽게 캡슐화하는 오브젝트로 동기를 취합니다. 그러한 오브젝트가 없는 경우에는 Collections.synchronizedList 메소드를 사용해 리스트를 「랩」합니다. 이것은 리스트에의 불측의 비동기 액세스를 막기 위해서(때문에), 작성시에 실시하는 것이 최적입니다.
List list = Collections.synchronizedList(new ArrayList(...));
이 클래스의 iterator 및 listIterator 메소드에 의해 돌려주어지는 반복자는 「페이르파스트」입니다. 반복자의 작성 후에, 반복자 자체의 remove 또는 add 메소드 이외 방법으로 리스트를 구조적으로 변경하면(자), 반복자는 ConcurrentModificationException 를 슬로우 합니다. 따라서, 동시 변경을 하면(자), 반복자는 장래의 예측할 수 없는 시점에 있어 예측할 수 없는 동작이 발생하는 위험을 회피하기 위해서, 신속하게 한편 깨끗하게 실패합니다.
일반적으로, 비동기의 동시 변경이 있는 가운데 확실한 프로텍션하는 것은 불가능해서, 반복자의 페이르파스트 동작을 프로텍션할 수 없습니다.. 페이르파스트 반복자는 최선 노력 원칙에 근거해 ConcurrentModificationException 를 슬로우 합니다. 따라서, 정정하기 위해서 이 예외에 의존한 프로그램을 쓰는 것은 잘못입니다. 즉, 반복자의 페이르파스트 동작은 버그의 검출 (을) 위해서만 사용해야 합니다.
- 도입된 버젼:
- 1.2
- 관련 항목:
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 |
ArrayList
public ArrayList(int initialCapacity)
- 지정된 초기 사이즈로 하늘의 리스트를 작성합니다.
- 파라미터:
initialCapacity
- 리스트의 초기 용량- 예외:
IllegalArgumentException
- 지정된 초기 용량이 부의 경우
ArrayList
public ArrayList()
- 초기 용량 10 으로 하늘의 리스트를 작성합니다.
ArrayList
public ArrayList(Collection c)
- 지정된 콜렉션의 요소를 포함한 리스트를 작성합니다. 이러한 요소는 콜렉션의 반복자가 돌려주는 순서로 저장됩니다. ArrayList 의 인스턴스의 초기 사이즈는 지정된 콜렉션의 사이즈의 110% 입니다.
- 파라미터:
c
- 요소가 리스트에 배치되는 콜렉션- 예외:
NullPointerException
- 지정된 콜렉션이 null 인 경우
trimToSize
public void trimToSize()
- 이 ArrayList 의 인스턴스의 사이즈를 리스트의 현재의 사이즈에 축소합니다. 어플리케이션에서는
이 오퍼레이션으로 ArrayList 의 인스턴스의 저장 사이즈를 최소로 할 수 있습니다.
-
-
ensureCapacity
public void ensureCapacity(int minCapacity)
- 필요에 따라서, 이 ArrayList 의 인스턴스의 사이즈를 확대해, 적어도 최소 사이즈 인수로 지정된 수의 요소를
저장할 수 있게 합니다.
-
-
- 파라미터:
minCapacity
- 프로텍션하고 싶은 최소 용량
size
public int size()
- 리스트내에 있는 요소의 수를 돌려줍니다.
-
- 정의:
- 인터페이스
List
내의size
- 정의:
- 클래스
AbstractCollection
내의size
-
- 반환값:
- 리스트내의 요소수
isEmpty
public boolean isEmpty()
- 리스트에 요소가 있는지 없는지를 판정합니다.
-
- 정의:
- 인터페이스
List
내의isEmpty
- 오버라이드(override):
- 클래스
AbstractCollection
내의isEmpty
-
- 반환값:
- 리스트에 요소가 없는 경우는 true, 그렇지 않은 경우는 false
contains
public boolean contains(Object elem)
- 리스트로 지정의 요소가 있는 경우에 true 를 돌려줍니다.
-
- 정의:
- 인터페이스
List
내의contains
- 오버라이드(override):
- 클래스
AbstractCollection
내의contains
-
- 파라미터:
elem
- 리스트에 있을지 어떨지를 조사하는 요소- 반환값:
- 지정된 요소가 있는 경우는
true
, 그렇지 않은 경우는false
indexOf
public int indexOf(Object elem)
- equals 메소드를 사용해 동일한지 어떤지를
판정하면서, 지정된 인수와 같은 내용의 요소를 선두로부터 검색합니다.
-
- 정의:
- 인터페이스
List
내의indexOf
- 오버라이드(override):
- 클래스
AbstractList
내의indexOf
-
- 파라미터:
elem
- 오브젝트- 반환값:
- 리스트내에서 인수가 최초로 나타나는 인덱스. 오브젝트가 발견되지 않는 경우는 -1
- 관련 항목:
Object.equals(Object)
lastIndexOf
public int lastIndexOf(Object elem)
- 지정된 오브젝트가 리스트내에서 마지막에 나타나는 인덱스를 돌려줍니다.
-
- 정의:
- 인터페이스
List
내의lastIndexOf
- 오버라이드(override):
- 클래스
AbstractList
내의lastIndexOf
-
- 파라미터:
elem
- 목적의 요소- 반환값:
- 리스트로 지정의 오브젝트와 일치하는 마지막 오브젝트의 인덱스. 오브젝트가 발견되지 않는 경우는 -1
clone
public Object clone()
- ArrayList 의 인스턴스의 카피를
돌려줍니다. 요소 자체는 카피되지 않습니다.
-
- 반환값:
- 이 ArrayList 의 인스턴스의 복제
- 관련 항목:
Cloneable
toArray
public Object [] toArray()
- 리스트내의 모든 요소가 올바른 순서로 저장되고 있는 배열을 돌려줍니다.
-
- 정의:
- 인터페이스
List
내의toArray
- 오버라이드(override):
- 클래스
AbstractCollection
내의toArray
-
- 반환값:
- 리스트내의 모든 요소가 올바른 순서로 저장되고 있는 배열
- 관련 항목:
Arrays.asList(Object[])
toArray
public Object [] toArray(Object [] a)
- 리스트내의 모든 요소가 올바른 순서로 저장되고 있는 배열을 돌려줍니다. 돌려주어지는 배열의 실행시의 형태는 지정된 배열의 형태가 됩니다.
지정된 배열에 리스트가 들어가는 경우는 그 배열에 돌려주어집니다. 그 이외의 경우는 지정된 배열의 실행시의 형태와 리스트의 사이즈를 사용해
새로운 배열을 할당할 수 있습니다.
지정된 배열에 리스트가 들어가, 그 배열에 한층 더 여분의 area가 있는 경우, 즉 배열에 리스트보다 많은 요소가 있는 경우, 배열로 콜렉션의 말미에 계속되는 요소는 null 로 설정됩니다. 이것은 리스트의 길이를 조사할 때 유용합니다. 다만 호출해 옆에서, 리스트에 null 요소가 없는 것을 알고 있는 경우에 한정합니다.
-
- 정의:
- 인터페이스
List
내의toArray
- 오버라이드(override):
- 클래스
AbstractCollection
내의toArray
-
- 파라미터:
a
- 배열이 충분한 크기를 가지는 경우는 리스트의 요소가 저장되는 배열. 그렇지 않은 경우는 요소를 저장하기 위해서 같은 실행시의 형태의 새로운 배열을 할당할 수 있다- 반환값:
- 리스트의 요소가 저장되고 있는 배열
- 예외:
ArrayStoreException
- a 의 실행시의 형태가 리스트내의 각 요소의 실행시의 형태의 슈퍼 세트가 아닌 경우
get
public Object get(int index)
- 리스트내의 지정된 위치에 있는 요소를 돌려줍니다.
-
- 정의:
- 인터페이스
List
내의get
- 정의:
- 클래스
AbstractList
내의get
-
- 파라미터:
index
- 돌려주어지는 요소의 인덱스- 반환값:
- 리스트내의 지정된 위치에 있는 요소
- 예외:
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index >= size())
set
public Object set(int index, Object element)
- 리스트의 지정된 위치에 있는 요소를, 지정된 요소로 옮겨놓습니다.
-
- 정의:
- 인터페이스
List
내의set
- 오버라이드(override):
- 클래스
AbstractList
내의set
-
- 파라미터:
index
- 치환되는 요소의 인덱스element
- 지정된 위치에 저장되는 요소- 반환값:
- 지정된 위치에 이전 있던 요소
- 예외:
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index >= size())
add
public boolean add(Object o)
- 리스트의 마지막으로, 지정된 요소를 추가합니다.
-
- 정의:
- 인터페이스
List
내의add
- 오버라이드(override):
- 클래스
AbstractList
내의add
-
- 파라미터:
o
- 리스트에 추가되는 요소- 반환값:
- true (Collection.add 의 범용 규약 대로)
add
public void add(int index, Object element)
- 리스트의 지정된 위치에, 지정된 요소를 삽입합니다. 현재 그 위치에 있는 요소와 후속의 요소는 오른쪽으로 이동합니다 (인덱스치에 1 을
가산).
-
- 정의:
- 인터페이스
List
내의add
- 오버라이드(override):
- 클래스
AbstractList
내의add
-
- 파라미터:
index
- 지정의 요소가 삽입되는 인덱스element
- 삽입되는 요소- 예외:
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())
remove
public Object remove(int index)
- 리스트내의 지정된 위치로부터 요소를 삭제합니다. 그리고, 후속의 요소를 좌측으로 이동해, 각각의 인덱스로부터 1 을 감산합니다.
-
- 정의:
- 인터페이스
List
내의remove
- 오버라이드(override):
- 클래스
AbstractList
내의remove
-
- 파라미터:
index
- 삭제되는 요소의 인덱스- 반환값:
- 리스트로부터 삭제한 요소
- 예외:
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index >= size())
clear
public void clear()
- 리스트로부터 모든 요소를 삭제합니다. 이 호출이 돌아오면(자), 이 리스트는 비웁니다.
-
- 정의:
- 인터페이스
List
내의clear
- 오버라이드(override):
- 클래스
AbstractList
내의clear
-
addAll
public boolean addAll(Collection c)
- 리스트의 말미에, 지정된 Collection 의 모든 요소를 추가합니다. 이러한 요소는 지정된 Collection 의 Iterator 가
돌려주는 순서로 추가됩니다. 이 오퍼레이션의 실행중으로 지정의 Collection 를 변경했을 경우의, 오퍼레이션 동작은 정의되고 있지
않습니다. 이것은 지정된 Collection 가 이 리스트 자신이며, 게다가 이 리스트가 하늘이 아닌 경우에, 이 호출의 동작이 미정도리인 것을
의미합니다.
-
- 정의:
- 인터페이스
List
내의addAll
- 오버라이드(override):
- 클래스
AbstractCollection
내의addAll
-
- 파라미터:
c
- 리스트에 삽입하는 요소- 반환값:
- 이 호출의 결과, 이 리스트가 변경되었을 경우는 true
- 예외:
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())NullPointerException
- 지정된 콜렉션이 null 인 경우- 관련 항목:
List.add(Object)
addAll
public boolean addAll(int index, Collection c)
- 리스트내의 지정된 위치로부터, 지정된 Collection 의 모든 요소를 삽입합니다. 그 시점에서, 지정된 위치에 요소가 있는 경우, 그
위치의 요소를 이동시켜, 후속의 요소를 우측으로 이동해, 각각의 인덱스를 늘립니다. 새로운 요소는 지정된 Collection 의 반복자가
돌려주는 순서로 리스트에 저장됩니다.
-
- 정의:
- 인터페이스
List
내의addAll
- 오버라이드(override):
- 클래스
AbstractList
내의addAll
-
- 파라미터:
index
- 지정된 콜렉션으로부터 최초의 요소를 삽입하는 위치의 인덱스c
- 리스트에 삽입되는 요소- 반환값:
- 이 호출의 결과, 이 리스트가 변경되었을 경우는 true
- 예외:
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())NullPointerException
- 지정된 콜렉션이 null 인 경우
removeRange
protected void removeRange(int fromIndex, int toIndex)
- 이 List 로부터, fromIndex 에 시작해 toIndex 의 직전까지의 인덱스를 가지는 모든 요소를 삭제합니다. 후속의 요소는
왼쪽으로 이동합니다 (인덱스치가 감소). 이 호출은 (toIndex - fromIndex) 의 요소수만큼 리스트를 단축합니다. toIndex==fromIndex 의 경우, 이 처리는 실행되지 않습니다.
-
- 오버라이드(override):
- 클래스
AbstractList
내의removeRange
-
- 파라미터:
fromIndex
- 삭제하는 최초의 요소의 인덱스toIndex
- 삭제하는 마지막 요소의 직후의 인덱스
'차근차근 > Android' 카테고리의 다른 글
java.io.ByteArrayOutputStream (0) | 2014.07.29 |
---|---|
java.io.UnsupportedEncodingException (0) | 2014.07.29 |
Apache HttpClient 라이브러리를 통한 HTTP 통신 JSON 파싱 (1/3) (0) | 2014.07.29 |
안드로이드 @override (0) | 2014.07.29 |
처음 보는 APK에 Main Activity를 어떻게 찾을까? (0) | 2014.07.29 |