JavaTM Platform
Standard Ed. 6

java.util
인터페이스 Set<E>

형태 파라미터:
E - 이 세트가 보관 유지하는 요소의 형태
모든 슈퍼 인터페이스:
Collection <E>, Iterable <E>
기존의 서브 인터페이스의 일람:
NavigableSet <E>, SortedSet <E>
기존의 구현 클래스의 일람:
AbstractSet , ConcurrentSkipListSet , CopyOnWriteArraySet , EnumSet , HashSet , JobStateReasons , LinkedHashSet , TreeSet


public interface Set<E>
extends Collection <E>

중복 요소가 없는 컬렉션입니다. 즉, 세트는,e1.equals(e2)e1e2 의 요소 페어는 가지지 않고, null 요소를 최대 1 개(살) 밖에 가지지 않습니다. 그 이름이 가리키도록(듯이), 이 인터페이스는, 수학으로 말하는 집합의 추상화 객체를 모델화합니다.

Set 인터페이스는,Collection 인터페이스로부터 상속한 규정 뿐만이 아니라, 모든 생성자 의 규약, 및 add,equals,hashCode 의 각 메소드의 규약에 추가의 규정을 적용합니다. 편의상, 다른 상속 메소드의 선언도 여기에 포함됩니다. 이러한 선언에 부수 하는 스펙은 Set 인터페이스에 맞추어 조정필 보고입니다만, 추가 규정은 포함되어 있지 않습니다.

생성자 에 대한 추가 규정으로서 모든 생성자 은, 중복 요소가 없는 세트를 작성하지 않으면 안됩니다 (상기를 참조).

주:가변 객체가 세트 요소로서 사용되는 경우는, 세심의 주의가 필요합니다. 객체가 세트내의 요소인 동안에 equals 비교에 영향을 주는 방식에서 그 값이 변경되었을 경우, 세트의 동작은 보증되지 않습니다. 이 금지 사항의 특례에 의해, 세트가 그 자체를 요소로서 가지는 것은 허가되지 않습니다.

세트의 구현에는, 포함할 수 있는 요소에 제한이 있는 것도 있습니다. 예를 들어, null 요소를 금지하는 구현이나, null 요소의 형태에 제한이 있는 구현도 있습니다. 부적당한 요소를 추가하려고 하면(자), 일반적으로 NullPointerException 또는 ClassCastException 와 같은 체크되지 않는 예외가 throw 됩니다. 부적당한 요소를 조회하려고 하면(자), 예외가 throw 되는 경우나, 다만 false 를 돌려주는 경우도 있습니다. 전의 동작을 금지하는 구현도 있으면, 후의 동작을 금지하는 구현도 있습니다. 좀 더 일반적으로 말하면(자), 세트에의 삽입이 되지 않는 부적당한 요소를 처리하려고 하면(자), 예외가 throw 되는 경우나, 처리가 유효하게 되는 경우가 있습니다. 이 인터페이스에 관한 그러한 예외는, 「임의」의 스펙으로서 마크 됩니다.

이 인터페이스는,Java Collections Framework 의 멤버입니다.

도입된 버젼:
1.2
관련 항목:
Collection , List , SortedSet , HashSet , TreeSet , AbstractSet , Collections.singleton(java.lang.Object) , Collections.EMPTY_SET

메소드의 개요
 boolean add (E  e)
          지정된 요소가 세트내에 없었던 경우, 세트에 추가합니다 (임의의 오퍼레이션).
 boolean addAll (Collection <? extends E > c)
          지정된 컬렉션의 모든 요소에 대해, 그 요소가 이 세트내에 없는 경우, 세트에 추가합니다 (임의의 오퍼레이션).
 void clear ()
          세트로부터 모든 요소를 삭제합니다 (임의의 오퍼레이션).
 boolean contains (Object  o)
          세트가, 지정된 요소를 보관 유지하고 있는 경우에 true 를 돌려줍니다.
 boolean containsAll (Collection <? > c)
          지정된 컬렉션의 모든 요소가 세트내에 있는 경우에 true 를 돌려줍니다.
 boolean equals (Object  o)
          지정된 객체가 세트와 같은가 어떤가를 비교합니다.
 int hashCode ()
          세트의 해시 코드값를 돌려줍니다.
 boolean isEmpty ()
          세트가 요소를 1 개나 보관 유지하고 있지 않는 경우에 true 를 돌려줍니다.
 Iterator <E > iterator ()
          세트내의 각 요소에 대한 반복자를 돌려줍니다.
 boolean remove (Object  o)
          지정된 요소가 세트내에 있었을 경우, 세트로부터 삭제합니다 (임의의 오퍼레이션).
 boolean removeAll (Collection <? > c)
          이 세트로부터, 지정된 컬렉션에 포함되는 요소를 모두 삭제합니다 (임의의 오퍼레이션).
 boolean retainAll (Collection <? > c)
          세트내의 요소 가운데, 지정된 컬렉션내에 있는 요소만을 보관 유지합니다 (임의의 오퍼레이션).
 int size ()
          세트내의 요소수 (그 카디나리티)를 돌려줍니다.
 Object [] toArray ()
          세트내의 모든 요소가 포함되고 있는 배열을 돌려줍니다.
<T> T[]
toArray (T[] a)
          세트내의 모든 요소를 포함하고 있는 배열을 돌려줍니다.
 

메소드의 상세

size

int size()
세트내의 요소수 (그 카디나리티)를 돌려줍니다. 이 세트에 Integer.MAX_VALUE 보다 많은 요소가 있는 경우는,Integer.MAX_VALUE 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 size
반환값:
세트내의 요소수 (그 카디나리티)

isEmpty

boolean isEmpty()
세트가 요소를 1 개나 보관 유지하고 있지 않는 경우에 true 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 isEmpty
반환값:
세트가 요소를 1 개나 보관 유지하고 있지 않는 경우는 true

contains

boolean contains(Object  o)
세트가, 지정된 요소를 보관 유지하고 있는 경우에 true 를 돌려줍니다. 즉, 세트에,(o==null ?  e==null : o.equals(e)) 가 되는 요소 e 가 포함되어 있는 경우에만 true 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 contains
파라미터:
o - 세트에 있을지 어떨지를 조사하는 요소
반환값:
세트가, 지정된 요소를 보관 유지하고 있는 경우는 true
예외:
ClassCastException - 지정된 요소의 형태가, 이 세트와 호환이 아닌 경우 (생략 가능)
NullPointerException - 지정된 요소가 null 이며, 이 세트가 null 요소를 허가하지 않는 경우 (생략 가능)

iterator

Iterator <E > iterator()
세트내의 각 요소에 대한 반복자를 돌려줍니다. 세트가 순서를 보증하는 특정 클래스의 인스턴스가 아닌 한, 요소는 특정의 순서에서는 돌려주어지지 않습니다.

정의:
인터페이스 Collection <E > 내의 iterator
정의:
인터페이스 Iterable <E > 내의 iterator
반환값:
세트의 요소의 반복자

toArray

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

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

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

정의:
인터페이스 Collection <E > 내의 toArray
반환값:
세트내의 모든 요소를 보관 유지하고 있는 배열

toArray

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

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

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

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

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

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

정의:
인터페이스 Collection <E > 내의 toArray
파라미터:
a - 이 세트의 요소의 포함처가 되는 배열 (다만 충분히 큰 경우). 그 이외의 경우, 이 목적을 위해서(때문에) 같은 실행시의 형태의 새로운 배열을 할당할 수 있다
반환값:
세트내의 모든 요소를 보관 유지하고 있는 배열
예외:
ArrayStoreException - 지정된 배열의 실행시의 형태가, 이 세트내의 모든 요소의 실행시의 형태의 슈퍼타입이 아닌 경우
NullPointerException - 지정된 배열이 null 인 경우

add

boolean add(E  e)
지정된 요소가 세트내에 없었던 경우, 세트에 추가합니다 (임의의 오퍼레이션). 즉, 세트내에,(e==null ?  e2==null : e.equals(e2)) 에 해당하는 요소 e2 가 없었던 경우는, 지정된 요소 e 를 세트에 추가합니다. 세트내에 벌써 이 요소가 있는 경우, 호출은 세트를 변경하지 않고 false 를 돌려줍니다. 이 때문에, 생성자 에 대한 제약과의 편성에 의해, 세트가 중복 요소를 가지지 않는 것을 보증합니다.

이 규정은, 세트가 모든 요소를 받아들이지 않으면 안 되는 것을 의미하는 것은 아닙니다. 즉, 세트에서는,null 를 포함한 임의의 요소의 추가를 거부하거나 예외를 throw 하는 것을 임의로 지정할 수 있습니다 (Collection.add 의 스펙을 참조). 세트의 각 구현에서는, 세트가 가질 수 있는 요소에 대한 제약을 명기하도록 해 주세요.

정의:
인터페이스 Collection <E > 내의 add
파라미터:
e - 세트에 추가되는 요소
반환값:
세트가 지정된 요소를 보관 유지하고 있지 않았던 경우는 true
예외:
UnsupportedOperationException - add 오퍼레이션이 이 세트로 지원되지 않는 경우
ClassCastException - 지정된 요소의 클래스가 원인으로, 이 세트에 그 요소를 추가할 수 없는 경우
NullPointerException - 지정된 요소가 null 이며, 이 세트가 null 요소를 허가하지 않는 경우
IllegalArgumentException - 지정된 요소가 있는 프로퍼티이 원인으로, 이 세트에 그 요소를 추가할 수 없는 경우

remove

boolean remove(Object  o)
지정된 요소가 세트내에 있었을 경우, 세트로부터 삭제합니다 (임의의 오퍼레이션). 즉, 이 세트에 (o==null ?  e==null : o.equals(e)) 가 되는 요소 e 가 포함되어 있는 경우에, 그 요소를 삭제합니다. 이 요소가 세트내에 있었을 경우 (세트가 호출의 결과로서 변경되었을 경우)는,true 를 돌려줍니다. 호출이 복귀한 뒤는, 이 세트는 그 요소를 가지고 있지 않습니다.

정의:
인터페이스 Collection <E > 내의 remove
파라미터:
o - 세트에 존재하면 삭제되는 객체
반환값:
세트가, 지정된 요소를 보관 유지하고 있었을 경우는 true
예외:
ClassCastException - 지정된 요소의 형태가, 이 세트와 호환이 아닌 경우 (생략 가능)
NullPointerException - 지정된 요소가 null 이며, 이 세트가 null 요소를 허가하지 않는 경우 (생략 가능)
UnsupportedOperationException - remove 오퍼레이션이 이 세트로 지원되지 않는 경우

containsAll

boolean containsAll(Collection <? > c)
지정된 컬렉션의 모든 요소가 세트내에 있는 경우에 true 를 돌려줍니다. 지정된 컬렉션도 세트인 경우, 지정된 세트가 이 세트의 「부분집합」이면, 이 메소드는 true 를 돌려줍니다.

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

addAll

boolean addAll(Collection <?  extends E > c)
지정된 컬렉션의 모든 요소에 대해, 그 요소가 이 세트내에 없는 경우, 세트에 추가합니다 (임의의 오퍼레이션). 지정된 컬렉션도 세트인 경우,addAll 오퍼레이션은 효율적으로 세트를 변경해, 그 값이 2 개세트의 「화집합」이 되도록(듯이) 합니다. 오퍼레이션의 진행중에, 지정된 컬렉션이 변경되었을 경우의, 이 오퍼레이션의 동작은 정의되고 있지 않습니다.

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

retainAll

boolean retainAll(Collection <? > c)
세트내의 요소 가운데, 지정된 컬렉션내에 있는 요소만을 보관 유지합니다 (임의의 오퍼레이션). 즉, 세트로부터, 지정된 컬렉션내에 없는 요소를 모두 삭제합니다. 지정된 컬렉션도 세트인 경우, 이 오퍼레이션의 결과, 세트의 값은 2 개세트의 「공통 부분」이 됩니다.

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

removeAll

boolean removeAll(Collection <? > c)
이 세트로부터, 지정된 컬렉션에 포함되는 요소를 모두 삭제합니다 (임의의 오퍼레이션). 지정된 컬렉션도 세트인 경우, 이 오퍼레이션은, 값이 2 개세트의 「비대칭 집합 차분」이 되도록(듯이) 세트를 효율적으로 변경합니다.

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

clear

void clear()
세트로부터 모든 요소를 삭제합니다 (임의의 오퍼레이션). 이 호출이 돌아오면(자), 세트는 비웁니다.

정의:
인터페이스 Collection <E > 내의 clear
예외:
UnsupportedOperationException - clear 메소드가 이 세트로 지원되지 않는 경우

equals

boolean equals(Object  o)
지정된 객체가 세트와 같은가 어떤가를 비교합니다. 지정된 객체도 세트로, 2 개세트가 같은 사이즈를 가져, 지정된 세트의 모든 멤버가 이 세트에 포함되는 경우, 또는, 이 세트의 모든 멤버가 지정된 세트에 포함되는 경우는,true 를 돌려줍니다. 이 정의에 의해, equals 메소드가 세트 인터페이스의 다양한 구현으로 적절히 동작하는 것이 보증됩니다.

정의:
인터페이스 Collection <E > 내의 equals
오버라이드(override):
클래스 Object 내의 equals
파라미터:
o - 이 세트와 동일한지 어떤지가 비교되는 객체
반환값:
지정된 객체가 이 세트와 같은 경우는 true
관련 항목:
Object.hashCode() , Hashtable

hashCode

int hashCode()
세트의 해시 코드값를 돌려줍니다. 세트의 해시 코드는, 세트내의 각 요소의 해시 코드의 합계입니다. 다만,null 요소의 해시 코드는 제로가 됩니다. 이것에 의해,Object.hashCode() 의 일반 규약으로 요구되는 대로, 임의의 2 개세트 s1s2 에 대해,s1.equals(s2) 의 경우 s1.hashCode() ==s2.hashCode() 가 됩니다.

정의:
인터페이스 Collection <E > 내의 hashCode
오버라이드(override):
클래스 Object 내의 hashCode
반환값:
세트의 해시 코드값
관련 항목:
Object.equals(Object) , equals(Object)

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 도 참조해 주세요.