|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
java.lang.Objectjava.util.AbstractCollection <E>
java.util.AbstractList<E>
public abstract class AbstractList<E>
이 클래스는,List
인터페이스의 스켈리턴 구현을 제공해, 배열과 같은 「랜덤 억세스」데이터 기억역에 연동하는 이 인터페이스를 구현하는데 필요한 작업량을 최소한으로 억제합니다. 링크 리스트와 같은 차례차례 액세스 데이터 기억역의 경우는, 이 클래스는 아니고 AbstractSequentialList
를 사용해 주세요.
변경 불가능한 리스트를 구현하려면 , 이 클래스를 확장해,get(int)
메소드 및 size()
메소드의 구현을 제공합니다.
변경 가능한 리스트를 구현하려면 , 상기에 가세해,set(int, E)
메소드를 오버라이드(override) 합니다. 이 메소드를 오버라이드(override) 하지 않았던 경우는,UnsupportedOperationException
가 throw 됩니다. 리스트가 가변 사이즈인 경우는,add(int, E)
메소드 및 remove(int)
메소드도 오버라이드(override) 할 필요가 있습니다.
Collection
인터페이스의 스펙으로 추천 되고 있도록(듯이), 일반적으로은, 인수 없음의 void 생성자 , 및 인수에 컬렉션을 취하는 생성자 을 제공해 주세요.
다른 컬렉션의 추상 구현과는 달라, 반복자의 구현을 제공할 필요는 없습니다. 반복자 및 리스트 반복자는 이 클래스에서 구현되어 랜덤 억세스용의 메소드인 get(int)
,set(int, E)
,add(int, E)
, 및 remove(int)
의 상위에 자리매김됩니다.
구현의 상세한 것에 대하여는, 이 클래스의 abstract 메소드 이외의 각 메소드의 문서를 참조해 주세요. 보다 효율적인 구현을 할 수 있는 컬렉션의 경우는, 이러한 메소드를 오버라이드(override) 해도 괜찮습니다.
이 클래스는,Java Collections Framework 의 멤버입니다.
필드의 개요 | |
---|---|
protected int |
modCount
이 리스트의 「구조가 변경되었다」회수입니다. |
생성자 의 개요 | |
---|---|
protected |
AbstractList ()
유일한 생성자 입니다. |
메소드의 개요 | |
---|---|
boolean |
add (E e)
지정된 요소를 리스트의 마지막에 추가합니다 (임의의 오퍼레이션). |
void |
add (int index,
E element)
리스트내의 지정된 위치에, 지정된 요소를 삽입합니다 (임의의 오퍼레이션). |
boolean |
addAll (int index,
Collection <? extends E > c)
지정된 컬렉션내의 모든 요소를, 리스트의 지정된 위치에 삽입합니다 (임의의 오퍼레이션). |
void |
clear ()
모든 요소를 리스트로부터 삭제합니다 (임의의 오퍼레이션). |
boolean |
equals (Object o)
지정된 객체가 리스트와 동일한지 어떤지를 비교합니다. |
abstract E |
get (int index)
리스트내의 지정된 위치에 있는 요소를 돌려줍니다. |
int |
hashCode ()
이 리스트의 해시 코드값를 돌려줍니다. |
int |
indexOf (Object o)
지정된 요소가 리스트내에서 최초로 검출된 위치의 인덱스를 돌려줍니다. |
Iterator <E > |
iterator ()
이 리스트내의 요소를 적절한 순서로 반복 처리 하는 반복자를 돌려줍니다. |
int |
lastIndexOf (Object o)
지정된 요소가 리스트내에서 마지막에 검출된 위치의 인덱스를 돌려줍니다. |
ListIterator <E > |
listIterator ()
이 리스트내의 요소를 적절한 순서로 반복 처리 하는 리스트 반복자를 돌려줍니다. |
ListIterator <E > |
listIterator (int index)
리스트내의 요소를 적절한 순서로 반복 처리 하는, 리스트내의 지정된 위치로부터 개시하는 반복자를 돌려줍니다. |
E |
remove (int index)
리스트내의 지정된 위치에 있는 요소를 삭제합니다 (임의의 오퍼레이션). |
protected void |
removeRange (int fromIndex,
int toIndex)
fromIndex (이것을 포함한다) ~ toIndex (이것을 포함하지 않는다)의 범위의 인덱스를 가지는 모든 요소를 이 리스트로부터 삭제합니다. |
E |
set (int index,
E element)
리스트내의 지정된 위치에 있는 요소를, 지정된 요소에 옮겨놓습니다 (임의의 오퍼레이션). |
List <E > |
subList (int fromIndex,
int toIndex)
이 리스트의,fromIndex (이것을 포함한다)로부터 toIndex (이것을 포함하지 않는다)의 범위의 부분의 뷰를 돌려줍니다. |
클래스 java.util. AbstractCollection 로부터 상속된 메소드 |
---|
addAll , contains , containsAll , isEmpty , remove , removeAll , retainAll , size , toArray , toArray , toString |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , finalize , getClass , notify , notifyAll , wait , wait , wait |
인터페이스 java.util. List 로부터 상속된 메소드 |
---|
addAll , contains , containsAll , isEmpty , remove , removeAll , retainAll , size , toArray , toArray |
필드의 상세 |
---|
protected transient int modCount
이 필드는,iterator
메소드 및 listIterator
메소드에 의해 반환되는 반복자 및 리스트 반복자의 구현에 의해 사용됩니다. 이 필드의 값이 예기치 않은 형태로 변화했을 경우, 반복자나 리스트 반복자는 next
,remove
,previous
,set
, 또는 add
오퍼레이션에 응해 ConcurrentModificationException
를 throw 합니다. 이것은, 반복 처리중의 병행 변경을 앞두고, 미확정 동작은 아니고 fail-fast 동작을 제공합니다.
이 필드를 서브 클래스에서 사용하는 것은 임의입니다. 서브 클래스에서 fail-fast 반복자 및 리스트 반복자를 제공할 필요가 있는 경우에는, 단순하게, 서브 클래스의 add(int, E)
메소드 및 remove(int)
메소드 ( 및, 서브 클래스가 오버라이드(override) 하는 메소드 가운데로, 리스트의 구조적인 변경을 하는 메소드)의 내부에서, 이 필드를 인크리먼트(increment) 합니다. @code add(int, E)} 또는 remove(int)
에 대한 1 회의 호출에서는, 필드에 1 만 더할 필요가 있습니다. 그렇게 하지 않으면 반복자 ( 및 리스트 반복자)가 잘못해 ConcurrentModificationExceptions
를 throw 하게 됩니다. 구현으로 fail-fast 반복자를 제공하지 않는 경우는, 이 필드를 무시해도 괜찮습니다.
생성자 의 상세 |
---|
protected AbstractList()
메소드의 상세 |
---|
public boolean add(E e)
이 오퍼레이션을 지원하는 리스트는, 리스트에 추가할 수 있는 요소에 제한을 더하는 경우가 있습니다. 특히, 리스트에는 null 요소의 추가를 거부하는 것도 있으면, 추가되는 요소의 형태에 대해 제한을 더하는 것도 있습니다. List 클래스는, List 에 추가할 수 있는 요소에 대해 제약이 있으면, 문서로 그것을 명확하게 지정할 필요가 있습니다.
이 구현은 add(size(), e)
를 호출합니다.
이 구현은,add(int, E)
가 오버라이드(override) 되지 않는 한 UnsupportedOperationException
를 throw 합니다.
Collection <E >
내의 add
List <E >
내의 add
AbstractCollection <E >
내의 add
e
- 리스트에 추가되는 요소
true
(Collection.add(E)
로 지정되었을 경우와 같이)
UnsupportedOperationException
- 리스트가 add
오퍼레이션을 지원하고 있지 않는 경우
ClassCastException
- 지정된 요소의 클래스가 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
NullPointerException
- 지정된 요소가 null 로, 이 리스트가 null 요소를 허용 하지 않는 경우
IllegalArgumentException
- 이 요소가 있는 특성이 원인으로, 이 리스트에 요소를 추가할 수 없는 경우public abstract E get(int index)
List <E >
내의 get
index
- 반환되는 요소의 인덱스
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public E set(int index, E element)
이 구현은, 항상 UnsupportedOperationException
를 throw 합니다.
List <E >
내의 set
index
- 치환되는 요소의 인덱스element
- 지정된 위치에 포함되는 요소
UnsupportedOperationException
- set 오퍼레이션이 이 리스트로 지원되지 않는 경우
ClassCastException
- 지정된 요소의 클래스가 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
NullPointerException
- 지정된 요소가 null 로, 이 리스트가 null 요소를 허용 하지 않는 경우
IllegalArgumentException
- 지정된 요소가 있는 프로퍼티이 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public void add(int index, E element)
이 구현은, 항상 UnsupportedOperationException
를 throw 합니다.
List <E >
내의 add
index
- 지정의 요소가 삽입되는 위치의 인덱스element
- 삽입되는 요소
UnsupportedOperationException
- add 오퍼레이션이 이 리스트로 지원되지 않는 경우
ClassCastException
- 지정된 요소의 클래스가 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
NullPointerException
- 지정된 요소가 null 로, 이 리스트가 null 요소를 허용 하지 않는 경우
IllegalArgumentException
- 지정된 요소가 있는 프로퍼티이 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public E remove(int index)
이 구현은, 항상 UnsupportedOperationException
를 throw 합니다.
List <E >
내의 remove
index
- 삭제되는 요소의 인덱스
UnsupportedOperationException
- remove 오퍼레이션이 이 리스트로 지원되지 않는 경우
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public int indexOf(Object o)
이 구현은,listIterator()
를 사용해, 최초로 리스트 반복자를 가져옵니다. 다음에, 지정된 요소가 발견되든가, 혹은 리스트의 말미에 이를 때까지, 리스트의 내용을 차례차례로 조사합니다.
List <E >
내의 indexOf
o
- 검색하는 요소
ClassCastException
- 지정된 요소의 형태가, 이 리스트와 호환이 아닌 경우 (생략 가능)
NullPointerException
- 지정된 요소가 null 이며, 이 리스트가 null 요소를 허가하지 않는 경우 (생략 가능)public int lastIndexOf(Object o)
이 구현은,listIterator(size())
를 사용해, 최초로 리스트의 말미를 가리키는 리스트 반복자를 가져옵니다. 다음에, 지정된 요소가 발견되든가, 혹은 리스트의 선두에 이를 때까지, 리스트 내용을 역방향으로 차례차례 조사합니다.
List <E >
내의 lastIndexOf
o
- 검색하는 요소
ClassCastException
- 지정된 요소의 형태가, 이 리스트와 호환이 아닌 경우 (생략 가능)
NullPointerException
- 지정된 요소가 null 이며, 이 리스트가 null 요소를 허가하지 않는 경우 (생략 가능)public void clear()
이 구현은 removeRange(0, size())
를 호출합니다.
remove(int index)
또는 removeRange(int fromIndex, int toIndex)
가 오버라이드(override) 되지 않는 한, 이 구현은 UnsupportedOperationException
를 throw 합니다.
Collection <E >
내의 clear
List <E >
내의 clear
AbstractCollection <E >
내의 clear
UnsupportedOperationException
- 리스트가 clear
오퍼레이션을 지원하고 있지 않는 경우public boolean addAll(int index, Collection <? extends E > c)
이 구현은, 지정된 컬렉션의 반복자를 취득해, 반복자로부터 취득한 요소를 이 리스트의 적절한 위치에 1 개씩 삽입하는 조작을 반복합니다. 삽입에는 add(int, E)
메소드를 사용합니다. 많은 경우, 구현에서는, 이 메소드를 오버라이드(override) 하는 편이 효율적입니다.
이 구현은,add(int, E)
가 오버라이드(override) 되지 않는 한 UnsupportedOperationException
를 throw 합니다.
List <E >
내의 addAll
index
- 지정된 컬렉션의 최초의 요소를 삽입하는 위치의 인덱스c
- 요소가 리스트에 추가되는 컬렉션
UnsupportedOperationException
- addAll 오퍼레이션이 이 리스트로 지원되지 않는 경우
ClassCastException
- 지정된 컬렉션이 있는 요소의 클래스가 원인으로, 이 리스트에 그 컬렉션을 추가할 수 없는 경우
NullPointerException
- 지정된 컬렉션에 1 개 이상의 null 요소가 포함되어 있어 이 리스트가 null 요소를 허가하지 않는 경우, 또는 지정된 컬렉션이 null 의 경우
IllegalArgumentException
- 지정된 컬렉션이 있는 요소가 있는 특성이 원인으로, 이 리스트에 그 컬렉션을 추가할 수 없는 경우
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())public Iterator <E > iterator()
이 구현은, 반복자 인터페이스의 간단한 구현을 돌려줍니다. 이 처리에서는, 기본으로 되는 리스트의 size()
,get(int)
, 및 remove(int)
라고 하는 각 메소드를 이용합니다.
이 메소드로 반환되는 반복자는, 리스트의 remove(int)
메소드가 오버라이드(override) 되지 않는 한,remove
메소드를 호출하면(자) UnsupportedOperationException
를 throw 합니다.
이 구현은, (protected) modCount
필드의 스펙으로 설명되고 있도록(듯이), 병행 변경을 앞두고 실행시의 예외를 throw 하는 일도 있습니다.
Iterable <E >
내의 iterator
Collection <E >
내의 iterator
List <E >
내의 iterator
AbstractCollection <E >
내의 iterator
modCount
public ListIterator <E > listIterator()
이 구현은 listIterator(0)
를 돌려줍니다.
List <E >
내의 listIterator
listIterator(int)
public ListIterator <E > listIterator(int index)
next
의 최초의 호출에 의해 반환되는 최초의 요소를 나타냅니다. previous
의 최초의 호출은, 지정된 인덱스로부터 1 을 뺀 값의 인덱스를 가지는 요소를 돌려줍니다.
이 구현은, ListIterator 인터페이스의 간단한 구현을 돌려줍니다. ListIterator
인터페이스는,iterator()
메소드에 의해 반환되는 Iterator
인터페이스의 구현을 확장하는 것입니다. ListIterator
의 구현은, 기본으로 되는 리스트의 get(int)
,set(int, E)
,add(int, E)
, 및 remove(int)
의 각 메소드에 의존합니다.
이 구현으로 반환되는 리스트 반복자는, 리스트의 remove(int)
,set(int, E)
, 및 add(int, E)
메소드가 오버라이드(override) 되지 않는 한,remove
,set
, 및 add
메소드에 응답해 UnsupportedOperationException
를 throw 합니다.
이 구현은, (protected) modCount
필드의 스펙으로 설명되고 있도록(듯이), 병행 변경을 앞두고 실행시의 예외를 throw 하는 일도 있습니다.
List <E >
내의 listIterator
index
- 리스트 반복자로부터 (next 메소드 호출에 의해) 반환되는 최초의 요소의 인덱스
IndexOutOfBoundsException
- 인덱스가 범위외의 경우 (index < 0 || index > size())modCount
public List <E > subList(int fromIndex, int toIndex)
이 메소드는, 배열에 일반적으로 볼 수 있는 것 같은, 명시적인 범위 조작을 위한 요구를 불필요하게 합니다. 리스트를 요구하는 어떠한 조작도 리스트 전체는 아니고, subList 뷰상에서 조작하는 것으로, 범위 조작으로서 사용할 수 있습니다. 예를 들어, 다음의 관용법은, 지정된 범위의 요소를 리스트로부터 삭제합니다.
list.subList(from, to). clear();indexOf 및 lastIndexOf 에서도, 같은 관용법을 작성할 수 있습니다. Collections 클래스의 알고리즘이 모두 subList 에 적용할 수 있습니다.
배킹 리스트 (즉, 이 리스트)의 구조가, 반환된 리스트를 경유하지 않고 로 변경되었을 경우, 이 메소드로 반환된 리스트의 시멘틱스는 보증되지 않습니다. 구조의 변경이란, 리스트의 사이즈가 바뀌는 것 같은 변경이나, 진행중의 반복 처리가 부정한 결과에 끝나는 것 같은 변경입니다.
이 구현은,AbstractList
를 서브 클래스화하는 리스트를 돌려줍니다. 이 서브 클래스는, 전용 필드에, 배킹 리스트내의 subList 의 오프셋(offset), subList 의 사이즈 (존속 기간중으로 변경하는 일도 가능), 및 배킹 리스트의 요구되는 modCount
치를 포함합니다. 서브 클래스에는 변형이 2 개 있어, 그 중의 1 개(살)에는 RandomAccess
가 구현되고 있습니다. 리스트가 RandomAccess
를 구현하면(자), 반환된 리스트는 RandomAccess
를 구현하는 서브 클래스의 인스턴스가 됩니다.
서브 클래스의 set(int, E)
,get(int)
,add(int, E)
,remove(int)
,addAll(int, Collection)
, 및 removeRange(int, int)
의 각 메소드는, 인덱스의 경계를 조사해 오프셋(offset)에 맞추어 조정한 후에, 배킹 추상 리스트의 대응하는 메소드에 모두 위양 합니다. addAll(Collection c)
메소드는, 단지 addAll(size, c)
를 돌려줄 뿐입니다.
listIterator(int)
메소드는, 배킹 리스트의 리스트 반복자에게로의 「래퍼 객체」를 돌려줍니다. 이 「래퍼 객체」는, 배킹 리스트의 대응하는 메소드로 작성됩니다. iterator
메소드는 listIterator()
를 돌려주는 것만으로 있어, 같이size
메소드는 서브 클래스의 size
필드를 돌려줄 뿐입니다.
모든 메소드는, 최초로, 배킹 리스트의 실제의 modCount
가 그 요구된 값에 동일한가를 조사해 그렇지 않은 경우는 ConcurrentModificationException
를 throw 합니다.
List <E >
내의 subList
fromIndex
- subList 의 하단점 (이것을 포함한다)toIndex
- subList 의 상단점 (이것을 포함하지 않는다)
IndexOutOfBoundsException
- 단 점의 인덱스치가 범위외의 경우 (fromIndex < 0 || toIndex > size)
IllegalArgumentException
- 단 점의 인덱스의 순서가 부정한 경우 (fromIndex > toIndex)
public boolean equals(Object o)
true
를 돌려줍니다. (e1==null ? e2==null : e1.equals(e2))
의 경우, 2 개의 요소 e1
와 e2
는, 동일해집니다. 즉 2 개의 리스트는, 같은 요소가 같은 순서로 포함되어 있는 경우에 동일한 것으로서 정의됩니다.
이 구현은, 최초로, 지정된 객체가 이 리스트일지 어떨지를 조사합니다. 이 리스트인 경우, 구현은 true
를 돌려줍니다. 그렇지 않은 경우는, 지정된 객체가 리스트인가 어떤가를 조사해 리스트가 아니면 false
를 돌려줍니다. 지정된 객체가 리스트의 경우는, 양쪽 모두의 리스트의 내용을 차례차례 조사해, 요소의 대응하는 페어를 비교합니다. 비교의 결과 false
가 반환되는 일이 있으면, 이 메소드도 false
를 돌려줍니다. 어느 쪽인가의 리스트의 반복자의 요소가 먼저 없어졌을 경우는, 2 개의 리스트의 길이가 동일하지 않기 때문에 false
를 돌려줍니다. 그렇지 않은 경우는, 반복이 완료한 시점에서 true
를 돌려줍니다.
Collection <E >
내의 equals
List <E >
내의 equals
Object
내의 equals
o
- 리스트와 동일한지 어떤지를 비교하는 객체
true
Object.hashCode()
,
Hashtable
public int hashCode()
이 구현에서는,List.hashCode()
메소드의 문서로 리스트 해쉬 함수를 정의하는데 사용되고 있는 코드를 그대로 사용하고 있습니다.
Collection <E >
내의 hashCode
List <E >
내의 hashCode
Object
내의 hashCode
Object.equals(java.lang.Object)
,
Hashtable
protected void removeRange(int fromIndex, int toIndex)
fromIndex
(이것을 포함한다) ~ toIndex
(이것을 포함하지 않는다)의 범위의 인덱스를 가지는 모든 요소를 이 리스트로부터 삭제합니다. 후속의 요소는 왼쪽으로 이동합니다 (인덱스치가 감소). 이 호출에 의해,(toIndex - fromIndex)
의 요소수만큼 ArrayList 가 짧아집니다. toIndex==fromIndex
의 경우, 이 오퍼레이션은 아무것도 실시하지 않습니다.
이 메소드는, 이 리스트 및 그 사브리 파업으로 clear
오퍼레이션에 의해 불려 갑니다. 이 메소드를 오버라이드(override) 해 리스트의 구현의 특성을 최대한으로 이용하도록(듯이) 하면(자), 이 리스트 및 그 사브리 파업에 대한 clear
오퍼레이션의 성능이 꽤 향상합니다.
이 구현은,fromIndex
의 전에 위치하는 리스트 반복자를 취득해, 범위 전체가 삭제될 때까지 ListIterator.next
와 ListIterator.remove
를 이 순서로 반복해 호출합니다. 주:ListIterator.remove
가 1 차 시간을 필요로 하는 경우, 이 구현에서는 2 차 시간이 필요합니다.
fromIndex
- 삭제하는 최초의 요소의 인덱스toIndex
- 삭제하는 마지막 요소의 직후의 인덱스
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.