|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.util.Dictionary <K, V>
java.util.Hashtable<K, V>
public class Hashtable<K, V>
이 클래스는, 해시 테이블을 구현하기 위한의 것으로, 키를 값에 맵 합니다. null
객체 이외이면, 어느 객체에서도 키나 값에 사용할 수가 있습니다.
해시 테이블에 객체를 포함하거나 거기로부터 꺼내거나 하려면 , 키로서 사용하는 객체에,hashCode
메소드와 equals
메소드가 구현되어 있지 않으면 안됩니다.
Hashtable
의 인스턴스에는, 그 성능에 영향을 주는 「초기 용량」 및 「부하 계수」라고 하는 2 개의 파라미터가 있습니다. 「용량」은 해시 테이블의 「버킷」의 수로, 「초기 용량」은 단순하게 해시 테이블이 작성되는 시점에서의 용량입니다. 해시 테이블은 「오픈」인 것에 주의해 주세요. 「해시의 충돌」이라고 하는, 1 개의 버킷이 복수의 엔트리를 포함하는 현상이 있어, 그 경우 그러한 엔트리는 시퀀셜 서치 되게 됩니다. 「부하 계수」는, 해시 테이블의 용량이 자동적으로 증가하기 전에 해시 테이블이 어느 정도 가득 될까의 기준입니다. 초기 용량과 부하 계수 파라미터는, 구현의 힌트에 지나지 않습니다. rehash
메소드가 언제 불려 가는지, 및 불려 갈지 어떨지는, 구현에 의해 다릅니다.
일반적으로, 디폴트의 부하 계수 (. 75)에서는, 시간 코스트와 스페이스 코스트의 균형을 취합니다. 이 값을 크게 하면(자) 스페이스의 오버헤드는 감소합니다만, 엔트리를 참조하기 위한 시간의 코스트는 증가해,get 및 put 를 포함한 대부분의 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
는 동기를 잡습니다.
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 |
생성자 의 상세 |
---|
public Hashtable(int initialCapacity, float loadFactor)
initialCapacity
- 해시 테이블의 초기 용량loadFactor
- 해시 테이블의 부하 계수
IllegalArgumentException
- 초기 용량이 0 보다 작은지, 부하 계수가 정의 값이 아닌 경우public Hashtable(int initialCapacity)
initialCapacity
- 해시 테이블의 초기 용량
IllegalArgumentException
- 초기 용량이 제로보다 작은 경우public Hashtable()
public Hashtable(Map <? extends K ,? extends V > t)
t
- 매핑이 이 맵에 배치되는 맵
NullPointerException
- 지정된 맵이 null 의 경우메소드의 상세 |
---|
public int size()
Map <K ,V >
내의 size
Dictionary <K ,V >
내의 size
public boolean isEmpty()
Map <K ,V >
내의 isEmpty
Dictionary <K ,V >
내의 isEmpty
true
, 어느 경우는 false
public Enumeration <K > keys()
Dictionary <K ,V >
내의 keys
Enumeration
,
elements()
,
keySet()
,
Map
public Enumeration <V > elements()
Dictionary <K ,V >
내의 elements
Enumeration
,
keys()
,
values()
,
Map
public boolean contains(Object value)
containsKey
메소드보다 부하가 걸립니다.
이 메소드는, 기능의 점으로써 containsValue
(컬렉션 시스템 Map
인터페이스의 일부)와 같습니다.
value
- 검색하는 값
value
인수에 매핑 하는 경우는 true
, 그렇지 않은 경우는 false
NullPointerException
- 치가 null
의 경우public boolean containsValue(Object value)
이 메소드는, 기능의 점으로써 contains
(Map
인터페이스에 선행한다)와 같습니다.
Map <K ,V >
내의 containsValue
value
- 해시 테이블에 있을지 어떨지를 판정되는 값
NullPointerException
- 치가 null
의 경우public boolean containsKey(Object key)
Map <K ,V >
내의 containsKey
key
- 가능한 키
true
, 그렇지 않은 경우는 false
NullPointerException
- 키가 null
의 경우contains(Object)
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)
protected void rehash()
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)
public V remove(Object key)
Map <K ,V >
내의 remove
Dictionary <K ,V >
내의 remove
key
- 삭제하는 키
null
NullPointerException
- 키가 null
의 경우public void putAll(Map <? extends K ,? extends V > t)
Map <K ,V >
내의 putAll
t
- 맵에 포함되는 매핑
NullPointerException
- 지정된 맵이 null 의 경우public void clear()
Map <K ,V >
내의 clear
public Object clone()
Object
내의 clone
Cloneable
public String toString()
Object
내의 toString
public Set <K > keySet()
Set
뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 세트의 반복 처리중으로 맵이 변경되었을 경우, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션을 제외하다). 세트는 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Set.remove,removeAll,retainAll, 및 retainAll 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.
Map <K ,V >
내의 keySet
public Set <Map.Entry <K ,V >> entrySet()
Set
뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 세트에 대한 반복의 처리중으로 맵이 변경되었을 경우는, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션, 또는 반복자에 의해 반환되는 맵 엔트리에 대한 setValue 오퍼레이션을 제외하다). 세트는 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.
Map <K ,V >
내의 entrySet
public Collection <V > values()
Collection
뷰를 돌려줍니다. 컬렉션은 맵과 연동하고 있으므로, 맵에 대한 변경은 컬렉션에 반영되어 또 컬렉션에 대한 변경은 맵에 반영됩니다. 컬렉션의 반복 처리중으로 맵이 변경되었을 경우, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션을 제외하다). 컬렉션은 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Collection.remove,removeAll,retainAll, 및 clear 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.
Map <K ,V >
내의 values
public boolean equals(Object o)
Map <K ,V >
내의 equals
Object
내의 equals
o
- Hashtable 와 동일한지 어떤지를 비교하는 객체
Map.equals(Object)
public int hashCode()
Map <K ,V >
내의 hashCode
Object
내의 hashCode
Map.hashCode()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.