JavaTM Platform
Standard Ed. 6

java.util
클래스 HashSet<E>

java.lang.Object 
  상위를 확장 java.util.AbstractCollection <E>
      상위를 확장 java.util.AbstractSet <E>
          상위를 확장 java.util.HashSet<E>
형태 파라미터:
E - 이 세트가 보관 유지하는 요소의 형태
모든 구현된 인터페이스:
Serializable , Cloneable , Iterable <E>, Collection <E>, Set <E>
직계의 기존의 서브 클래스:
JobStateReasons , LinkedHashSet


public class HashSet<E>
extends AbstractSet <E>
implements Set <E>, Cloneable , Serializable

이 클래스는, 해시 테이블 (실제로는 HashMap 의 인스턴스)에 연동해,Set 인터페이스를 구현합니다. 이 클래스에서는, 세트의 반복 순서에 대해 보증하지 않습니다. 특히, 그 순서를 일정에 유지하는 것을 보증하지 않습니다. 이 클래스는,null 요소를 허용 합니다.

이 클래스는, 해쉬 함수가 복수의 버킷으로 적절히 요소를 분산하는 것을 전제로서 기본의 오퍼레이션 (add,remove,contains, 및 size)으로 일정시간의 성능을 제공합니다. 세트의 반복 처리에서는,HashSet 의 인스턴스의 사이즈 (요소수)와 기가 되는 HashMap 의 인스턴스의 「용량」(버킷수)의 합계 에 비례한 시간이 필요합니다. 따라서, 반복 처리의 성능이 중요한 경우는, 초기 용량을 너무 높게 (부하 계수를 너무 낮게) 설정하지 않는 것이 매우 중요합니다.

이 구현은 동기화 되지 않습니다. 복수의 thread가 동시에 해시 세트에 액세스 해, 그러한 thread의 적어도 1 개(살)이 구조적으로 세트를 변경하는 경우에는, 외부에서 동기를 잡을 필요가 있습니다. 일반적으로, 구조적인 변경은, 세트를 자연스럽게 캡슐화하는 특정의 객체로 동기를 잡는 것에 의해 달성됩니다. 이런 종류의 객체가 없는 경우에는,Collections.synchronizedSet 메소드를 사용해 세트를 「랩」할 필요가 있습니다. 이것은, 세트에의 우발적인 비동기 액세스를 막기 위해서(때문에), 작성시에 실시하는 것이 최적입니다.

Set s = Collections.synchronizedSet(new HashSet(...));

이 클래스의 iterator 메소드에 의해 반환되는 반복자는 「fail-fast」입니다. 반복자가 작성된 뒤에, 반복자 독자적인 remove 메소드 이외 방법으로 세트가 변경되었을 경우, 반복자는 ConcurrentModificationException 를 throw 합니다. 이와 같이, 병행해 변경을 하면(자), 반복자는, 장래의 예측할 수 없는 시점에 있어 예측할 수 없는 동작이 발생하는 위험을 회피하기 위해서, 즉시 한편 솜씨 자주(잘) 예외를 throw 합니다.

일반적으로, 비동기의 병행 변경이 있는 경우, 확실한 보증을 실시하는 것은 불가능해서, 반복자의 fail-fast의 동작을 보증할 수 없습니다. fail-fast 반복자는 최선 노력 원칙에 근거해,ConcurrentModificationException 를 throw 합니다. 따라서, 정확을 기하기 위해서 이 예외에 의존하는 프로그램을 쓰는 것은 잘못입니다. 「반복자의 fail-fast의 동작은 버그를 검출하기 위해서 사용해야 합니다」

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

도입된 버젼:
1.2
관련 항목:
Collection , Set , TreeSet , HashMap , 직렬화 된 형식

생성자 의 개요
HashSet ()
          새로운 빈 상태(empty)세트를 작성합니다.
HashSet (Collection <? extends E > c)
          지정된 컬렉션의 요소를 포함하는 신규 세트를 작성합니다.
HashSet (int initialCapacity)
          새로운 빈 상태(empty)세트를 작성합니다.
HashSet (int initialCapacity, float loadFactor)
          새로운 빈 상태(empty)세트를 작성합니다.
 
메소드의 개요
 boolean add (E  e)
          지정된 요소가 이 세트의 요소로서 존재하지 않는 경우에, 그 요소를 세트에 추가합니다.
 void clear ()
          모든 요소를 세트로부터 삭제합니다.
 Object clone ()
          HashSet 의 인스턴스의 shallow 복사를 돌려줍니다.
 boolean contains (Object  o)
          세트가, 지정된 요소를 보관 유지하고 있는 경우에 true 를 돌려줍니다.
 boolean isEmpty ()
          세트가 요소를 1 개나 보관 유지하고 있지 않는 경우에 true 를 돌려줍니다.
 Iterator <E > iterator ()
          세트내의 각 요소에 대한 반복자를 돌려줍니다.
 boolean remove (Object  o)
          지정된 요소가 이 세트에 존재하는 경우에, 요소를 세트로부터 삭제합니다.
 int size ()
          세트내의 요소수 (그 카디나리티)를 돌려줍니다.
 
클래스 java.util. AbstractSet 로부터 상속된 메소드
equals , hashCode , removeAll
 
클래스 java.util. AbstractCollection 로부터 상속된 메소드
addAll , containsAll , retainAll , toArray , toArray , toString
 
클래스 java.lang. Object 로부터 상속된 메소드
finalize , getClass , notify , notifyAll , wait , wait , wait
 
인터페이스 java.util. Set 로부터 상속된 메소드
addAll , containsAll , equals , hashCode , removeAll , retainAll , toArray , toArray
 

생성자 의 상세

HashSet

public HashSet()
새로운 빈 상태(empty)세트를 작성합니다. 기가 되는 HashMap 의 인스턴스는 디폴트의 초기 용량 (16) 및 부하 계수 (0.75)를 가집니다.


HashSet

public HashSet(Collection <?  extends E > c)
지정된 컬렉션의 요소를 포함하는 신규 세트를 작성합니다. 디폴트의 부하 계수 (0.75), 및 지정된 컬렉션의 요소를 포함하는데 충분한 초기 용량에 의해,HashMap 는 작성됩니다.

파라미터:
c - 요소가 세트에 배치되는 컬렉션
예외:
NullPointerException - 지정된 컬렉션이 null 인 경우

HashSet

public HashSet(int initialCapacity,
               float loadFactor)
새로운 빈 상태(empty)세트를 작성합니다. 기가 되는 HashMap 의 인스턴스는 지정된 초기 용량 및 지정된 부하 계수를 가집니다.

파라미터:
initialCapacity - 해시 맵의 초기 용량
loadFactor - 해시 맵의 부하 계수
예외:
IllegalArgumentException - 초기 용량이 제로보다 작은 경우, 또는 부하 계수가 정이 아닌 경우

HashSet

public HashSet(int initialCapacity)
새로운 빈 상태(empty)세트를 작성합니다. 기가 되는 HashMap 의 인스턴스는 지정된 초기 용량 및 디폴트의 부하 계수 (0.75)를 가집니다.

파라미터:
initialCapacity - 해시 테이블의 초기 용량
예외:
IllegalArgumentException - 초기 용량이 제로보다 작은 경우
메소드의 상세

iterator

public Iterator <E > iterator()
세트내의 각 요소에 대한 반복자를 돌려줍니다. 요소가 돌려주어질 때 특정의 순서는 없습니다.

정의:
인터페이스 Iterable <E > 내의 iterator
정의:
인터페이스 Collection <E > 내의 iterator
정의:
인터페이스 Set <E > 내의 iterator
정의:
클래스 AbstractCollection <E > 내의 iterator
반환값:
세트의 요소의 Iterator
관련 항목:
ConcurrentModificationException

size

public int size()
세트내의 요소수 (그 카디나리티)를 돌려줍니다.

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

isEmpty

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

정의:
인터페이스 Collection <E > 내의 isEmpty
정의:
인터페이스 Set <E > 내의 isEmpty
오버라이드(override):
클래스 AbstractCollection <E > 내의 isEmpty
반환값:
세트가 요소를 1 개나 보관 유지하고 있지 않는 경우는 true

contains

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

정의:
인터페이스 Collection <E > 내의 contains
정의:
인터페이스 Set <E > 내의 contains
오버라이드(override):
클래스 AbstractCollection <E > 내의 contains
파라미터:
o - 세트에 있을지 어떨지를 조사하는 요소
반환값:
세트가, 지정된 요소를 보관 유지하고 있는 경우는 true

add

public boolean add(E  e)
지정된 요소가 이 세트의 요소로서 존재하지 않는 경우에, 그 요소를 세트에 추가합니다. 즉, 세트내에,(e==null ?  e2==null : e.equals(e2)) 에 해당하는 요소 e2 가 없었던 경우는, 지정된 요소 e 를 세트에 추가합니다. 세트내에 벌써 요소가 있는 경우, 호출은 세트를 변경하지 않고 false 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 add
정의:
인터페이스 Set <E > 내의 add
오버라이드(override):
클래스 AbstractCollection <E > 내의 add
파라미터:
e - 세트에 추가되는 요소
반환값:
세트가 지정된 요소를 보관 유지하고 있지 않았던 경우는 true

remove

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

정의:
인터페이스 Collection <E > 내의 remove
정의:
인터페이스 Set <E > 내의 remove
오버라이드(override):
클래스 AbstractCollection <E > 내의 remove
파라미터:
o - 세트에 존재하면 삭제되는 객체
반환값:
지정된 요소가 세트내에 있었을 경우는 true

clear

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

정의:
인터페이스 Collection <E > 내의 clear
정의:
인터페이스 Set <E > 내의 clear
오버라이드(override):
클래스 AbstractCollection <E > 내의 clear

clone

public Object  clone()
HashSet 의 인스턴스의 shallow 복사를 돌려줍니다. 요소 자체는 복제되지 않습니다.

오버라이드(override):
클래스 Object 내의 clone
반환값:
이 세트의 shallow 복사
관련 항목:
Cloneable

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