JavaTM Platform
Standard Ed. 6

java.util
클래스 AbstractCollection<E>

java.lang.Object 
  상위를 확장 java.util.AbstractCollection<E>
모든 구현된 인터페이스:
Iterable <E>, Collection <E>
직계의 기존의 서브 클래스:
AbstractList , AbstractQueue , AbstractSet , ArrayDeque


public abstract class AbstractCollection<E>
extends Object
implements Collection <E>

이 클래스는,Collection 인터페이스의 스켈리턴 구현을 제공해, 이 인터페이스를 구현하는데 필요한 작업량을 최소한으로 억제합니다.

변경 불가능한 컬렉션을 구현하려면 , 이 클래스를 확장해,iterator 메소드 및 size 메소드의 구현을 제공합니다. iterator 메소드가 돌려주는 반복자는,hasNextnext 를 구현하고 있을 필요가 있습니다.

변경 가능한 컬렉션을 구현하려면 , 상기에 가세해, 이 클래스의 add 메소드를 오버라이드(override) 하는 것으로 (오버라이드(override) 하지 않았던 경우는,UnsupportedOperationException 가 throw 된다),iterator 메소드로 반환되는 반복자가 remove 메소드를 구현하고 있을 필요가 있습니다.

Collection 인터페이스의 스펙으로 추천 되고 있도록(듯이), 일반적으로은, 인수 없음의 void 생성자 , 및 인수에 Collection 를 취하는 생성자 을 제공해 주세요.

구현의 상세한 것에 대하여는, 이 클래스의 abstract 메소드 이외의 각 메소드의 문서를 참조해 주세요. 보다 효율적인 구현을 할 수 있는 컬렉션의 경우는, 이러한 메소드를 오버라이드(override) 해도 괜찮습니다.

이 클래스는,Java Collections Framework 의 멤버입니다.

도입된 버젼:
1.2
관련 항목:
Collection

생성자 의 개요
protected AbstractCollection ()
          유일한 생성자 입니다.
 
메소드의 개요
 boolean add (E  e)
          지정된 요소가 이 컬렉션에 포함되고 있는 것을 보증합니다 (임의의 오퍼레이션).
 boolean addAll (Collection <? extends E > c)
          지정된 컬렉션의 모든 요소를 이 컬렉션에 추가합니다 (임의의 오퍼레이션).
 void clear ()
          이 컬렉션으로부터 모든 요소를 삭제합니다 (임의의 오퍼레이션).
 boolean contains (Object  o)
          컬렉션으로 지정된 요소가 있는 경우에 true 를 돌려줍니다.
 boolean containsAll (Collection <? > c)
          이 컬렉션내에, 지정된 컬렉션의 모든 요소가 있는 경우에 true 를 돌려줍니다.
 boolean isEmpty ()
          컬렉션에 요소가 없는 경우에 true 를 돌려줍니다.
abstract  Iterator <E > iterator ()
          이 컬렉션중의 요소에 관계하는 반복자를 돌려줍니다.
 boolean remove (Object  o)
          지정된 요소의 인스턴스가 이 컬렉션에 있으면, 그 인스턴스를 컬렉션으로부터 1 개 삭제합니다 (임의의 오퍼레이션).
 boolean removeAll (Collection <? > c)
          지정된 컬렉션에도 포함되고 있는 이 컬렉션의 모든 요소를 삭제합니다 (임의의 오퍼레이션).
 boolean retainAll (Collection <? > c)
          이 컬렉션에 대해, 지정된 컬렉션에 포함되고 있는 요소만을 보관 유지합니다 (임의의 오퍼레이션).
abstract  int size ()
          이 컬렉션중의 요소의 수를 돌려줍니다.
 Object [] toArray ()
          이 컬렉션의 요소가 모두 포함되고 있는 배열을 돌려줍니다.
<T> T[]
toArray (T[] a)
          이 컬렉션내의 모든 요소를 보관 유지하는 배열을 돌려줍니다.
 String toString ()
          이 컬렉션의 캐릭터 라인 표현을 돌려줍니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait
 
인터페이스 java.util. Collection 로부터 상속된 메소드
equals , hashCode
 

생성자 의 상세

AbstractCollection

protected AbstractCollection()
유일한 생성자 입니다. 서브 클래스의 생성자 에 의한 호출용으로, 일반적으로은 암묵적으로 불려 갑니다.

메소드의 상세

iterator

public abstract Iterator <E > iterator()
이 컬렉션중의 요소에 관계하는 반복자를 돌려줍니다.

정의:
인터페이스 Iterable <E > 내의 iterator
정의:
인터페이스 Collection <E > 내의 iterator
반환값:
이 컬렉션중의 요소에 관계하는 반복자

size

public abstract int size()
인터페이스 Collection 의 기술:
이 컬렉션중의 요소의 수를 돌려줍니다. 이 컬렉션에 Integer.MAX_VALUE 보다 많은 요소가 있는 경우는,Integer.MAX_VALUE 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 size
반환값:
컬렉션의 요소수

isEmpty

public boolean isEmpty()
컬렉션에 요소가 없는 경우에 true 를 돌려줍니다.

이 구현은 size() == 0 의 결과를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 isEmpty
반환값:
컬렉션에 요소가 없는 경우는 true

contains

public boolean contains(Object  o)
컬렉션으로 지정된 요소가 있는 경우에 true 를 돌려줍니다. 즉, 컬렉션에,(o==null ?  e==null : o.equals(e)) 가 되는 요소 e 가 1 개 이상 포함되어 있는 경우에만 true 를 돌려줍니다.

이 구현은 컬렉션의 각 요소에 대해, 지정된 요소와 동일한지 어떤지를 순서에 반복해 확인합니다.

정의:
인터페이스 Collection <E > 내의 contains
파라미터:
o - 컬렉션에 있을지 어떨지를 조사하는 요소
반환값:
컬렉션으로 지정된 요소가 있는 경우는 true
예외:
ClassCastException - 지정한 요소의 형태가, 이 컬렉션과 호환이 아닌 경우 (생략 가능)
NullPointerException - 지정된 요소가 null 로, 이 컬렉션이 null 요소를 허용 하지 않는 경우 (생략 가능)

toArray

public Object [] toArray()
이 컬렉션의 요소가 모두 포함되고 있는 배열을 돌려줍니다. 반복자에 의해 요소가 반환되는 순서를 컬렉션이 보증하는 경우, 이 메소드는 같은 순서로 요소를 돌려주지 않으면 안됩니다.

반환되는 배열에의 참조를 컬렉션이 유지하지 않는다고 하는 점으로써, 이 배열은 안전합니다. 즉, 이 메소드는, 컬렉션이 배열에 연동하고 있는 경우에서도 새로운 배열을 할당합니다. 이 때문에, 호출측은, 반환된 배열을 자유롭게 변경할 수 있습니다.

메소드는, 배열 베이스의 API 와 컬렉션 베이스의 API 의 사이의 중개역으로서 기능합니다.

이 구현은, 인덱스 0 으로 시작되어, 같은 순서로, 배열이 연속한 요소에 포함되고 있는, 이 컬렉션의 반복자에 의해 반환되는 모든 요소를 포함한 배열을 돌려줍니다. 반환되는 배열의 길이는, 컬렉션이 반복 처리시의 병행 변경을 허가하는 경우와 같게, 이 컬렉션의 사이즈가 반복 처리시로 바뀌는 경우에서도, 반복자에 의해 반환되는 요소의 수로 동일해집니다. size 메소드는, 최적화의 힌트로서 밖에 불려 가지 않습니다. 반복자가 다른 수의 요소를 돌려주는 경우에서도, 올바른 결과가 돌려주어집니다.

이 메소드는, 다음과 동등합니다.

 List<E> list = new ArrayList<E>(size());
 for (E e : this)
     list.add(e);
 return list.toArray();
 

정의:
인터페이스 Collection <E > 내의 toArray
반환값:
컬렉션의 모든 요소가 포함되고 있는 배열

toArray

public <T> T[] toArray(T[] a)
이 컬렉션내의 모든 요소를 보관 유지하는 배열을 돌려줍니다. 반환되는 배열의 실행시의 형태는, 지정된 배열의 형태입니다. 컬렉션이 지정된 배열에 들어가는 경우는, 그 중에 돌려주어집니다. 그렇지 않은 경우는, 지정된 배열의 실행시의 형태와 컬렉션의 사이즈를 가지는 새로운 배열을 할당할 수 있습니다.

컬렉션이 지정된 배열에 들어가, 그 배열에 한층 더 여유가 있는 경우 (즉, 배열이 컬렉션보다 많은 요소를 가지는 경우), 그 배열내에서 컬렉션의 끝보다 나머지의 요소는 null 로 설정됩니다. 컬렉션에 null 요소가 없는 것을 호출해 옆이 알고 있는 경우에만, 이 특성을 이용해 컬렉션의 길이를 판단할 수 있습니다.

반복자에 의해 요소가 반환되는 순서를 컬렉션이 보증하는 경우, 이 메소드는 같은 순서로 요소를 돌려주지 않으면 안됩니다.

Collection.toArray() 메소드와 같이, 이 메소드는, 배열 베이스의 API 와 컬렉션 베이스의 API 의 사이의 중개역으로서 기능합니다. 게다가 이 메소드에서는, 출력 배열의 실행시의 형태를 정확하게 제어할 수 있기 (위해)때문에, 환경에 따라서는 할당의 수고를 억제할 수가 있습니다.

x 가, 캐릭터 라인만으로부터 되는 컬렉션인 것을 알 수 있고 있으면(자) 가정합니다. 다음의 코드를 사용하면(자), 새롭게 할당할 수 있었던 String 의 배열에 컬렉션을 덤프 할 수 있습니다.

String[] y = x.toArray(new String[0]);
toArray(new Object[0]) 는, 기능의 점으로써 toArray() 와 동일합니다.

이 구현은, 인덱스 0 으로 시작되어, 같은 순서로, 배열이 연속한 요소에 포함되고 있는, 이 컬렉션의 반복자에 의해 반환되는 모든 요소를 포함한 배열을 돌려줍니다. 반복자에 의해 반환되는 요소수가 너무 커 지정된 배열에 들어가지 않는 경우, 이 컬렉션의 사이즈가 반복 처리시로 바뀌는 경우에서도, 컬렉션이 반복 처리시로 병행 변경을 허가하고 있는 경우와 같게, 반복자에 의해 반환되는 요소수로 길이가 동일한, 새롭게 할당할 수 있었던 배열내의 요소가 돌려주어집니다. size 메소드는, 최적화의 힌트로서 밖에 불려 가지 않습니다. 반복자가 다른 수의 요소를 돌려주는 경우에서도, 올바른 결과가 돌려주어집니다.

이 메소드는, 다음과 동등합니다.

 List<E> list = new ArrayList<E>(size());
 for (E e : this)
     list.add(e);
 return list.toArray(a);
 

정의:
인터페이스 Collection <E > 내의 toArray
파라미터:
a - 컬렉션의 요소의 포함처의 배열. 배열의 사이즈가 충분하지 않은 경우는, 같은 실행시의 형태로 새로운 배열이 포함용으로서 할당할 수 있다
반환값:
컬렉션의 모든 요소가 포함되고 있는 배열
예외:
ArrayStoreException - 지정된 배열의 실행시의 형태가, 이 컬렉션내의 모든 요소의 실행시의 형태의 슈퍼타입이 아닌 경우
NullPointerException - 지정된 배열이 null 인 경우

add

public boolean add(E  e)
지정된 요소가 이 컬렉션에 포함되고 있는 것을 보증합니다 (임의의 오퍼레이션). 이 호출의 결과, 컬렉션이 변경되었을 경우는 true 를 돌려줍니다. 이 컬렉션이 요소의 중복을 허가하지 않고, 지정된 요소가 벌써 포함되어 있는 경우는 false 를 돌려줍니다.

이 오퍼레이션을 지원하는 컬렉션에서는, 컬렉션에 추가할 수 있는 요소에 대해 제한이 있는 경우가 있습니다. 예를 들어, 컬렉션에 따라서는,null 요소의 추가가 허가되지 않는 것이나, 추가되는 요소의 형태를 제한하는 일이 있습니다. 추가되는 요소에 관해서 제한이 있는 경우는, 그 Collection 클래스의 문서에 명시해야 하겠지요.

그 요소가 벌써 있다고 하는 이외의 이유로써 특정의 요소의 추가를 거부하는 경우, 컬렉션은 false 를 돌려주는 것이 아니라 예외를 throw 할 필요가 있습니다. 이것에 의해, 이 호출이 돌아온 뒤에 컬렉션이 지정된 요소를 반드시 포함한다고 하는 불변성을 유지할 수가 있습니다.

이 구현은, 항상 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 Collection <E > 내의 add
파라미터:
e - 컬렉션에 있을지 어떨지를 조사하는 요소
반환값:
이 호출의 결과, 이 컬렉션이 변경되었을 경우는 true
예외:
UnsupportedOperationException - add 오퍼레이션이 이 컬렉션으로 지원되지 않는 경우
ClassCastException - 지정된 요소의 클래스가 원인으로, 컬렉션에 요소를 추가할 수 없는 경우
NullPointerException - 지정된 요소가 null 로, 이 컬렉션이 null 요소를 허용 하지 않는 경우
IllegalArgumentException - 요소가 있는 특성이 원인으로, 이 컬렉션에 요소를 추가할 수 없는 경우
IllegalStateException - 삽입 제한을 위해서(때문에) 이 시점에서 요소를 추가할 수 없는 경우

remove

public boolean remove(Object  o)
지정된 요소의 인스턴스가 이 컬렉션에 있으면, 그 인스턴스를 컬렉션으로부터 1 개 삭제합니다 (임의의 오퍼레이션). 즉, 컬렉션내에,(o==null ?  e==null : o.equals(e)) 에 해당하는 요소 e 가 1 개 이상 포함되어 있는 경우는, 그러한 요소를 삭제합니다. 즉, 이 호출의 결과, 컬렉션이 변경되었을 경우에 true 를 돌려줍니다.

이 구현은, 컬렉션의 내용을 차례차례 조사해 지정된 요소를 찾습니다. 요소가 있으면, 반복자의 remove 메소드를 사용해 컬렉션으로부터 요소를 삭제합니다.

이 컬렉션의 iterator 메소드가 돌려주는 반복자가 remove 메소드를 구현하지 않고, 지정된 객체가 이 컬렉션내에 있는 경우, 이 구현은 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 Collection <E > 내의 remove
파라미터:
o - 컬렉션으로부터 삭제되는 요소 (그 요소가 존재하는 경우)
반환값:
이 호출의 결과, 요소가 삭제되었을 경우는 true
예외:
UnsupportedOperationException - remove 오퍼레이션이 이 컬렉션으로 지원되지 않는 경우
ClassCastException - 지정한 요소의 형태가, 이 컬렉션과 호환이 아닌 경우 (생략 가능)
NullPointerException - 지정된 요소가 null 로, 이 컬렉션이 null 요소를 허용 하지 않는 경우 (생략 가능)

containsAll

public boolean containsAll(Collection <? > c)
이 컬렉션내에, 지정된 컬렉션의 모든 요소가 있는 경우에 true 를 돌려줍니다.

이 구현은 지정된 컬렉션의 내용을 차례차례 조사해 반복자에 의해 반환된 각 요소에 대해, 이 컬렉션에 포함될지 어떨지를 차례로 확인합니다. 모든 요소가 이 컬렉션에 있는 경우는 true 를 돌려주어, 그렇지 않은 경우는 false 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 containsAll
파라미터:
c - 이 컬렉션에 있을지 어떨지를 조사하는 컬렉션
반환값:
지정된 컬렉션의 모든 요소가 이 컬렉션내에 있는 경우는 true
예외:
ClassCastException - 지정된 컬렉션의 1 개 이상의 요소의 형태가, 이 컬렉션과 호환이 아닌 경우 (생략 가능)
NullPointerException - 지정된 컬렉션에 1 개 이상의 null 요소가 포함되어 있어 이 컬렉션이 null 요소를 허가하지 않는 경우 (생략 가능). 또는 지정된 컬렉션이 null 의 경우
관련 항목:
contains(Object)

addAll

public boolean addAll(Collection <?  extends E > c)
지정된 컬렉션의 모든 요소를 이 컬렉션에 추가합니다 (임의의 오퍼레이션). 오퍼레이션의 진행중에, 지정된 컬렉션이 변경되었을 경우의, 이 오퍼레이션의 동작은 정의되고 있지 않습니다. 따라서, 지정된 컬렉션이 이 컬렉션 자신이며, 이 컬렉션이 빈 상태(empty)이 아닌 경우, 이 호출의 동작은 정의되고 있지 않습니다.

이 구현은, 지정된 컬렉션에 대해서 반복을 실시해, 반복자가 돌려주는 객체를 이 컬렉션에 순서에 추가해 나가는 조작을 반복합니다.

지정된 컬렉션이 빈 상태(empty)이 아닌 경우는,add 메소드가 오버라이드(override) 되지 않는 한, 이 구현은 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 Collection <E > 내의 addAll
파라미터:
c - 컬렉션에 추가되는 요소를 포함한 컬렉션
반환값:
이 호출의 결과, 이 컬렉션이 변경되었을 경우는 true
예외:
UnsupportedOperationException - addAll 오퍼레이션이 이 컬렉션으로 지원되지 않는 경우
ClassCastException - 지정된 컬렉션의 요소의 클래스가 원인으로, 이 컬렉션에 추가할 수 없었던 경우
NullPointerException - 지정된 컬렉션내에 null 요소가 포함되어 이 컬렉션이 null 요소를 허가하지 않는 경우. 또는 지정된 컬렉션이 null 의 경우
IllegalArgumentException - 지정된 컬렉션의 요소가 있는 특성이 원인으로, 이 컬렉션에 요소를 추가할 수 없었던 경우
IllegalStateException - 삽입 제한을 위해, 이 시점에서 일부의 요소를 추가할 수 없는 경우
관련 항목:
add(Object)

removeAll

public boolean removeAll(Collection <? > c)
지정된 컬렉션에도 포함되고 있는 이 컬렉션의 모든 요소를 삭제합니다 (임의의 오퍼레이션). 이 호출의 결과, 이 컬렉션에는 지정된 컬렉션과 공통의 요소는 없어집니다.

이 구현은 이 컬렉션의 내용을 차례차례 조사해 반복자에 의해 반환된 각 요소에 대해, 지정된 컬렉션에 포함될지 어떨지를 차례로 확인합니다. 그러한 요소가 있으면, 반복자의 remove 메소드를 사용해 이 컬렉션으로부터 삭제합니다.

iterator 메소드로 반환된 반복자가 remove 메소드를 구현하지 않고, 지정된 컬렉션에 공통되는 요소가 1 개에서도 이 컬렉션내에 있는 경우는, 이 구현은 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 Collection <E > 내의 removeAll
파라미터:
c - 이 컬렉션으로부터 삭제되는 요소를 포함한 컬렉션
반환값:
이 호출의 결과, 이 컬렉션이 변경되었을 경우는 true
예외:
UnsupportedOperationException - removeAll 메소드가 이 컬렉션으로 지원되지 않는 경우
ClassCastException - 이 컬렉션의 1 개 이상의 요소의 형태가, 지정된 컬렉션과 호환이 아닌 경우 (생략 가능)
NullPointerException - 이 컬렉션내에 1 개 이상의 null 요소가 포함되어 있어 지정된 컬렉션이 null 요소를 지원하지 않는 경우 (생략 가능). 또는 지정된 컬렉션이 null 의 경우
관련 항목:
remove(Object) , contains(Object)

retainAll

public boolean retainAll(Collection <? > c)
이 컬렉션에 대해, 지정된 컬렉션에 포함되고 있는 요소만을 보관 유지합니다 (임의의 오퍼레이션). 즉, 지정된 컬렉션에 포함되어 있지 않은 모든 요소를 이 컬렉션으로부터 삭제합니다.

이 구현은 이 컬렉션의 내용을 차례차례 조사해 반복자에 의해 반환된 각 요소에 대해, 지정된 컬렉션에 포함될지 어떨지를 차례로 확인합니다. 포함되지 않는 요소가 있으면, 반복자의 remove 메소드를 사용해 이 컬렉션으로부터 삭제합니다.

iterator 메소드로 반환된 반복자가 remove 메소드를 구현하지 않고, 지정된 컬렉션에 포함되지 않는 요소가 1 개에서도 이 컬렉션내에 있는 경우는, 이 구현은 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 Collection <E > 내의 retainAll
파라미터:
c - 이 컬렉션으로 보관 유지되는 요소를 포함한 컬렉션
반환값:
이 호출의 결과, 이 컬렉션이 변경되었을 경우는 true
예외:
UnsupportedOperationException - retainAll 오퍼레이션이 이 컬렉션으로 지원되지 않는 경우
ClassCastException - 이 컬렉션의 1 개 이상의 요소의 형태가, 지정된 컬렉션과 호환이 아닌 경우 (생략 가능)
NullPointerException - 이 컬렉션내에 1 개 이상의 null 요소가 포함되어 있어 지정된 컬렉션이 null 요소를 허가하지 않는 경우 (생략 가능). 또는 지정된 컬렉션이 null 의 경우
관련 항목:
remove(Object) , contains(Object)

clear

public void clear()
이 컬렉션으로부터 모든 요소를 삭제합니다 (임의의 오퍼레이션). 이 메소드가 돌아오면(자), 컬렉션은 비웁니다.

이 구현은 컬렉션에 대해서,Iterator.remove 오퍼레이션을 사용해 각 요소를 삭제하는 조작을 반복합니다. 대부분의 구현에서는, 이 메소드를 오버라이드(override) 한 (분)편이 보다 효율적입니다.

이 컬렉션의 iterator 메소드로 반환되는 반복자가 remove 메소드를 구현하지 않고, 이 컬렉션이 빈 상태(empty)이 아닌 경우, 이 구현은 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 Collection <E > 내의 clear
예외:
UnsupportedOperationException - clear 오퍼레이션이 이 컬렉션으로 지원되지 않는 경우

toString

public String  toString()
이 컬렉션의 캐릭터 라인 표현을 돌려줍니다. 캐릭터 라인 표현은, 컬렉션의 요소를 그 반복자가 돌려준 순서에 꺽쇄묶음 ("[]")으로 둘러싸 가리키는 리스트입니다. 인접하는 요소는, 문자 ", " (칸마와 공백 문자)에 의해 단락지어집니다. 각 요소는,String.valueOf(Object) 를 실행했는지와 같이 캐릭터 라인에 변환됩니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 컬렉션의 캐릭터 라인 표현

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.