JavaTM Platform
Standard Ed. 6

java.util
클래스 Hashtable<K, V>

java.lang.Object 
  상위를 확장 java.util.Dictionary <K, V>
      상위를 확장 java.util.Hashtable<K, V>
모든 구현된 인터페이스:
Serializable , Cloneable , Map <K, V>
직계의 기존의 서브 클래스:
Properties , UIDefaults


public class Hashtable<K, V>
extends Dictionary <K, V>
implements Map <K, V>, Cloneable , Serializable

이 클래스는, 해시 테이블을 구현하기 위한의 것으로, 키를 값에 맵 합니다. null 객체 이외이면, 어느 객체에서도 키나 값에 사용할 수가 있습니다.

해시 테이블에 객체를 포함하거나 거기로부터 꺼내거나 하려면 , 키로서 사용하는 객체에,hashCode 메소드와 equals 메소드가 구현되어 있지 않으면 안됩니다.

Hashtable 의 인스턴스에는, 그 성능에 영향을 주는 「초기 용량」 및 「부하 계수」라고 하는 2 개의 파라미터가 있습니다. 「용량」은 해시 테이블의 「버킷」의 수로, 「초기 용량」은 단순하게 해시 테이블이 작성되는 시점에서의 용량입니다. 해시 테이블은 「오픈」인 것에 주의해 주세요. 「해시의 충돌」이라고 하는, 1 개의 버킷이 복수의 엔트리를 포함하는 현상이 있어, 그 경우 그러한 엔트리는 시퀀셜 서치 되게 됩니다. 「부하 계수」는, 해시 테이블의 용량이 자동적으로 증가하기 전에 해시 테이블이 어느 정도 가득 될까의 기준입니다. 초기 용량과 부하 계수 파라미터는, 구현의 힌트에 지나지 않습니다. rehash 메소드가 언제 불려 가는지, 및 불려 갈지 어떨지는, 구현에 의해 다릅니다.

일반적으로, 디폴트의 부하 계수 (. 75)에서는, 시간 코스트와 스페이스 코스트의 균형을 취합니다. 이 값을 크게 하면(자) 스페이스의 오버헤드는 감소합니다만, 엔트리를 참조하기 위한 시간의 코스트는 증가해,getput 를 포함한 대부분의 Hashtable 오퍼레이션이 영향을 받습니다.

초기 용량에 의해, 낭비 스페이스와 (시간이 걸린다) rehash 오퍼레이션의 수요와의 사이의 균형이 제어됩니다. 초기 용량이,Hashtable 의 포함하는 엔트리의 최대수를 부하 계수로 나눈 값보다 큰 경우,rehash 오퍼레이션은 일어나지 않습니다. 다만, 초기 용량을 너무 많게 설정하면(자) , 스페이스의 낭비가 됩니다.

Hashtable 에 많은 엔트리를 넣는 경우는, 이 테이블을 충분히 큰 용량으로 작성하는 (분)편이, 필요에 따라서 해시를 자동적으로 다시 해 테이블을 크게 하는 것보다도, 엔트리를 효율적으로 삽입할 수가 있습니다.

이 예는, 수치의 해시 테이블을 작성합니다. 이 예에서는, 수치의 이름을 키로서 사용합니다.

   Hashtable<String, Integer> numbers
     = new Hashtable<String, Integer>();
   numbers.put("one", 1);
   numbers.put("two", 2);
   numbers.put("three", 3);

수치를 꺼내려면 , 다음의 코드를 사용합니다.

   Integer n = numbers.get("two");
   if (n ! = null) {
     System.out.println("two = " + n);
   }

이 클래스의 모든 코레크션뷰메소드에 의해 반환되는 컬렉션의 iterator 메소드에 의해 반환되는 반복자는, 「fail-fast」입니다. 반복자의 작성 후에, 반복자 자체의 remove 메소드 이외 방법으로 해시 테이블이 구조적으로 변경되면(자), 반복자는 ConcurrentModificationException 를 throw 합니다. 이와 같이, 병행해 변경을 하면(자), 반복자는, 장래의 예측할 수 없는 시점에 있어 예측할 수 없는 동작이 발생하는 위험을 회피하기 위해서, 즉시 한편 솜씨 자주(잘) 예외를 throw 합니다. Hashtable 의 키 메소드 및 요소 메소드에 의해 반환되는 Enumerations 는, fail-fast가 아닙니다.

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

이 클래스는, Java 2 플랫폼 v1. 2 의 시점에서 Map 인터페이스를 구현하도록(듯이) 개량된 결과,Java Collections Framework 의 멤버가 되었습니다. 새로운 컬렉션의 구현과는 달라,Hashtable 는 동기를 잡습니다.

도입된 버젼:
JDK1. 0
관련 항목:
Object.equals(java.lang.Object) , Object.hashCode() , rehash() , Collection , Map , HashMap , TreeMap , 직렬화 된 형식

생성자 의 개요
Hashtable ()
          디폴트의 초기 용량 (11)과 부하 계수 (0.75)로 신규의 빈 상태(empty)의 해시 테이블을 생성합니다.
Hashtable (int initialCapacity)
          지정된 초기 용량 및 디폴트의 부하 계수 (0.75)로 새로운 빈 상태(empty)의 해시 테이블을 생성합니다.
Hashtable (int initialCapacity, float loadFactor)
          지정된 초기 용량과 부하 계수로 새로운 빈 상태(empty)의 해시 테이블을 생성합니다.
Hashtable (Map <? extends K ,? extends V > t)
          지정된 Map 와 같은 매핑으로 새로운 해시 테이블을 생성합니다.
 
메소드의 개요
 void clear ()
          이 해시 테이블을 소거해, 키가 없는 상태로 합니다.
 Object clone ()
          해시 테이블의 카피를 작성합니다.
 boolean contains (Object  value)
          지정된 값에 맵 되고 있는 키가, 해시 테이블에 있을지 어떨지를 판정합니다.
 boolean containsKey (Object  key)
          지정된 객체가, 해시 테이블의 키인가 어떤가를 판정합니다.
 boolean containsValue (Object  value)
          이 해시 테이블이 1 개 또는 복수의 키를 이 값에 매핑 하는 경우에 true 를 돌려줍니다.
 Enumeration <V > elements ()
          해시 테이블에 있는 값의 리스트를 돌려줍니다.
 Set <Map.Entry <K ,V >> entrySet ()
          이 맵에 포함되는 맵 Set 뷰를 돌려줍니다.
 boolean equals (Object  o)
          Map 인터페이스에서의 정의에 따라, 지정된 Object 곳의 Map 를 비교해 동일한지 어떤지를 판정합니다.
 V get (Object  key)
          지정된 키가 맵 되고 있는 값을 돌려줍니다.
 int hashCode ()
          Map 인터페이스의 정의에 따라, 이 Map 의 해시 코드값를 돌려줍니다.
 boolean isEmpty ()
          값에 맵 되고 있는 키가, 해시 테이블에 있을지 어떨지를 판정합니다.
 Enumeration <K > keys ()
          해시 테이블에 있는 키의 리스트를 돌려줍니다.
 Set <K > keySet ()
          이 맵에 포함되는 키 Set 뷰를 돌려줍니다.
 V put (K  key, V  value)
          해시 테이블에 대해, 지정된 key 를, 지정된 value 에 맵 합니다.
 void putAll (Map <? extends K ,? extends V > t)
          지정한 맵으로부터 이 해시 테이블에 모든 매핑을 카피합니다.
protected  void rehash ()
          해시 테이블의 용량을 늘려, 그것을 내부적으로 재편성 해, 엔트리를 조정해 액세스를 보다 효율적으로 합니다.
 V remove (Object  key)
          키 ( 및 거기에 대응하는 값)를 해시 테이블에서 삭제합니다.
 int size ()
          해시 테이블에 있는 키의 수를 돌려줍니다.
 String toString ()
          Hashtable 객체의 캐릭터 라인 표현을, ASCII 문자 「,  」(콤마와 스페이스)로 단락지어지고 괄호로 둘러싼 엔트리세트의 형식에서 돌려줍니다.
 Collection <V > values ()
          이 맵에 포함되는 값 Collection 뷰를 돌려줍니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
finalize , getClass , notify , notifyAll , wait , wait , wait
 

생성자 의 상세

Hashtable

public Hashtable(int initialCapacity,
                 float loadFactor)
지정된 초기 용량과 부하 계수로 새로운 빈 상태(empty)의 해시 테이블을 생성합니다.

파라미터:
initialCapacity - 해시 테이블의 초기 용량
loadFactor - 해시 테이블의 부하 계수
예외:
IllegalArgumentException - 초기 용량이 0 보다 작은지, 부하 계수가 정의 값이 아닌 경우

Hashtable

public Hashtable(int initialCapacity)
지정된 초기 용량 및 디폴트의 부하 계수 (0.75)로 새로운 빈 상태(empty)의 해시 테이블을 생성합니다.

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

Hashtable

public Hashtable()
디폴트의 초기 용량 (11)과 부하 계수 (0.75)로 신규의 빈 상태(empty)의 해시 테이블을 생성합니다.


Hashtable

public Hashtable(Map <?  extends K ,?  extends V > t)
지정된 Map 와 같은 매핑으로 새로운 해시 테이블을 생성합니다. 지정된 Map 의 매핑을 보관 유지하는데 충분한 초기 용량, 및 디폴트의 부하 계수 (0.75)로, 해시 테이블은 작성됩니다.

파라미터:
t - 매핑이 이 맵에 배치되는 맵
예외:
NullPointerException - 지정된 맵이 null 의 경우
도입된 버젼:
1.2
메소드의 상세

size

public int size()
해시 테이블에 있는 키의 수를 돌려줍니다.

정의:
인터페이스 Map <K ,V > 내의 size
정의:
클래스 Dictionary <K ,V > 내의 size
반환값:
해시 테이블에 있는 키의 수

isEmpty

public boolean isEmpty()
값에 맵 되고 있는 키가, 해시 테이블에 있을지 어떨지를 판정합니다.

정의:
인터페이스 Map <K ,V > 내의 isEmpty
정의:
클래스 Dictionary <K ,V > 내의 isEmpty
반환값:
치에 맵 되고 있는 키가 해시 테이블에 없는 경우는 true, 어느 경우는 false

keys

public Enumeration <K > keys()
해시 테이블에 있는 키의 리스트를 돌려줍니다.

정의:
클래스 Dictionary <K ,V > 내의 keys
반환값:
해시 테이블에 있는 키의 리스트
관련 항목:
Enumeration , elements() , keySet() , Map

elements

public Enumeration <V > elements()
해시 테이블에 있는 값의 리스트를 돌려줍니다. 이러한 요소를 차례차례 꺼내려면 , Enumeration 의 메소드를 사용합니다.

정의:
클래스 Dictionary <K ,V > 내의 elements
반환값:
해시 테이블에 있는 값의 리스트
관련 항목:
Enumeration , keys() , values() , Map

contains

public boolean contains(Object  value)
지정된 값에 맵 되고 있는 키가, 해시 테이블에 있을지 어떨지를 판정합니다. 이 조작은,containsKey 메소드보다 부하가 걸립니다.

이 메소드는, 기능의 점으로써 containsValue (컬렉션 시스템 Map 인터페이스의 일부)와 같습니다.

파라미터:
value - 검색하는 값
반환값:
있는 키가 equals 메소드로 결정되어 있는, 해시 테이블의 value 인수에 매핑 하는 경우는 true, 그렇지 않은 경우는 false
예외:
NullPointerException - 치가 null 의 경우

containsValue

public boolean containsValue(Object  value)
이 해시 테이블이 1 개 또는 복수의 키를 이 값에 매핑 하는 경우에 true 를 돌려줍니다.

이 메소드는, 기능의 점으로써 contains (Map 인터페이스에 선행한다)와 같습니다.

정의:
인터페이스 Map <K ,V > 내의 containsValue
파라미터:
value - 해시 테이블에 있을지 어떨지를 판정되는 값
반환값:
맵이 1 개 또는 복수의 키와 지정된 값을 매핑 하고 있는 경우는 true
예외:
NullPointerException - 치가 null 의 경우
도입된 버젼:
1.2

containsKey

public boolean containsKey(Object  key)
지정된 객체가, 해시 테이블의 키인가 어떤가를 판정합니다.

정의:
인터페이스 Map <K ,V > 내의 containsKey
파라미터:
key - 가능한 키
반환값:
equals 메소드로 결정되어 있도록(듯이), 지정된 객체가 이 해시 테이블의 키인 경우는 true, 그렇지 않은 경우는 false
예외:
NullPointerException - 키가 null 의 경우
관련 항목:
contains(Object)

get

public V  get(Object  key)
지정된 키가 맵 되고 있는 값을 돌려줍니다. 그 키의 매핑이 이 맵에 포함되지 않은 경우는 null 를 돌려줍니다.

즉, 이 메소드는,(key.equals(k)) 가 되는 키 k 로부터 값 v 에의 매핑이 이 맵에 포함되는 경우는 v 를 돌려주어, 그 이외의 경우는 null 를 돌려줍니다. 이러한 매핑이 1 개만 있습니다.

정의:
인터페이스 Map <K ,V > 내의 get
정의:
클래스 Dictionary <K ,V > 내의 get
파라미터:
key - 관련지을 수 있었던 값이 반환되는 키
반환값:
지정된 키가 맵 되고 있는 값. 그 키의 매핑이 이 맵에 포함되지 않은 경우는 null
예외:
NullPointerException - 지정된 키가 null 인 경우
관련 항목:
put(Object, Object)

rehash

protected void rehash()
해시 테이블의 용량을 늘려, 그것을 내부적으로 재편성 해, 엔트리를 조정해 액세스를 보다 효율적으로 합니다. 해시 테이블에 있는 키의 수가 해시 테이블의 용량과 부하 계수를 넘으면(자), 이 메소드가 자동적으로 불려 갑니다.


put

public V  put(K  key,
             V  value)
해시 테이블에 대해, 지정된 key 를, 지정된 value 에 맵 합니다. 키나 값은 null 로 할 수 없습니다.

이 값은, 원의 키와 동일한 키를 지정해 get 메소드를 호출하는 것에 의해 꺼낼 수가 있습니다.

정의:
인터페이스 Map <K ,V > 내의 put
정의:
클래스 Dictionary <K ,V > 내의 put
파라미터:
key - 해시 테이블 키
value - 치
반환값:
해시 테이블의 지정된 키의 전의 값. 그것이 없는 경우는 null
예외:
NullPointerException - 키 또는 값이 null 의 경우
관련 항목:
Object.equals(Object) , get(Object)

remove

public V  remove(Object  key)
키 ( 및 거기에 대응하는 값)를 해시 테이블에서 삭제합니다. 그 키가 해시 테이블에 없는 경우는, 아무것도 실시하지 않습니다.

정의:
인터페이스 Map <K ,V > 내의 remove
정의:
클래스 Dictionary <K ,V > 내의 remove
파라미터:
key - 삭제하는 키
반환값:
해시 테이블로 그 키에 맵 되고 있는 값. 맵 되고 있는 값이 없는 경우는 null
예외:
NullPointerException - 키가 null 의 경우

putAll

public void putAll(Map <?  extends K ,?  extends V > t)
지정한 맵으로부터 이 해시 테이블에 모든 매핑을 카피합니다. 이것에 의해, 해시 테이블이 지정된 맵내에 현재 있는 키의 모두에 대해서 가지고 있던 매핑을 옮겨놓을 수 있습니다.

정의:
인터페이스 Map <K ,V > 내의 putAll
파라미터:
t - 맵에 포함되는 매핑
예외:
NullPointerException - 지정된 맵이 null 의 경우
도입된 버젼:
1.2

clear

public void clear()
이 해시 테이블을 소거해, 키가 없는 상태로 합니다.

정의:
인터페이스 Map <K ,V > 내의 clear

clone

public Object  clone()
해시 테이블의 카피를 작성합니다. 해시 테이블의 구조 자체는 모두 카피됩니다만, 키 및 값은 복제되지 않습니다. 이것은, 비교적 부담의 큰 조작입니다.

오버라이드(override):
클래스 Object 내의 clone
반환값:
해시 테이블의 복제
관련 항목:
Cloneable

toString

public String  toString()
Hashtable 객체의 캐릭터 라인 표현을, ASCII 문자 「,  」(콤마와 스페이스)로 단락지어지고 괄호로 둘러싼 엔트리세트의 형식에서 돌려줍니다. 각 엔트리는 키, 등 부호 =, 및 관련한 요소로서 draw 되어toString 메소드는 키 및 요소를 캐릭터 라인으로 변환하기 위해서(때문에) 사용됩니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 해시 테이블의 캐릭터 라인 표현

keySet

public Set <K > keySet()
이 맵에 포함되는 키 Set 뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 세트의 반복 처리중으로 맵이 변경되었을 경우, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션을 제외하다). 세트는 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Set.remove,removeAll,retainAll, 및 retainAll 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.

정의:
인터페이스 Map <K ,V > 내의 keySet
반환값:
맵에 포함되어 있는 키의 셋트뷰
도입된 버젼:
1.2

entrySet

public Set <Map.Entry <K ,V >> entrySet()
이 맵에 포함되는 맵 Set 뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 세트에 대한 반복의 처리중으로 맵이 변경되었을 경우는, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션, 또는 반복자에 의해 반환되는 맵 엔트리에 대한 setValue 오퍼레이션을 제외하다). 세트는 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.

정의:
인터페이스 Map <K ,V > 내의 entrySet
반환값:
맵내에 보관 유지되고 있는 매핑의 셋트뷰
도입된 버젼:
1.2

values

public Collection <V > values()
이 맵에 포함되는 값 Collection 뷰를 돌려줍니다. 컬렉션은 맵과 연동하고 있으므로, 맵에 대한 변경은 컬렉션에 반영되어 또 컬렉션에 대한 변경은 맵에 반영됩니다. 컬렉션의 반복 처리중으로 맵이 변경되었을 경우, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션을 제외하다). 컬렉션은 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Collection.remove,removeAll,retainAll, 및 clear 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.

정의:
인터페이스 Map <K ,V > 내의 values
반환값:
맵내에 포함되어 있는 값의 코레크션뷰
도입된 버젼:
1.2

equals

public boolean equals(Object  o)
Map 인터페이스에서의 정의에 따라, 지정된 Object 곳의 Map 를 비교해 동일한지 어떤지를 판정합니다.

정의:
인터페이스 Map <K ,V > 내의 equals
오버라이드(override):
클래스 Object 내의 equals
파라미터:
o - Hashtable 와 동일한지 어떤지를 비교하는 객체
반환값:
지정된 Object 가 이 Map 와 동일한 경우는 true
도입된 버젼:
1.2
관련 항목:
Map.equals(Object)

hashCode

public int hashCode()
Map 인터페이스의 정의에 따라, 이 Map 의 해시 코드값를 돌려줍니다.

정의:
인터페이스 Map <K ,V > 내의 hashCode
오버라이드(override):
클래스 Object 내의 hashCode
반환값:
이 객체의 해시 코드값
도입된 버젼:
1.2
관련 항목:
Map.hashCode()

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