차근차근/Android

java.util.ArrayList

예쁜꽃이피었으면 2014. 7. 29. 00:48
전용뷰어 보기

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 의 인스턴스의 카피를 돌려줍니다. 요소 자체는 카피되지 않습니다.

 

오버라이드(override):
클래스 Object 내의 clone
반환값:
이 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 - 삭제하는 마지막 요소의 직후의 인덱스


반응형