|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.Dictionary java.util.Hashtable
public class Hashtable
このクラスは、ハッシュテーブルを実装するためのもので、キーを値にマップします。null
オブジェクト以外であれば、どのオブジェクトでもキーや値に使用することができます。
ハッシュテーブルにオブジェクトを格納したり、そこから取り出したりするには、キーとして使用するオブジェクトに、hashCode
メソッドと equals
メソッドが実装されていなければなりません。
Hashtable
のインスタンスには、パフォーマンスに影響を及ぼすパラメータが 2 つあります。「初期容量」と「負荷係数」です。「容量」はハッシュテーブルの「バケット」の数で、「初期容量」は単純にハッシュテーブルが作成される時点での容量です。ハッシュテーブルは「オープン」であることに注意してください。「ハッシュの衝突」という、1 つのバケットが複数のエントリを格納する現象があり、その場合それらのエントリはシーケンシャルサーチされることになります。「負荷係数」は、ハッシュテーブルの容量が自動的に増加する前にハッシュテーブルがどの程度いっぱいになるかの基準です。ハッシュテーブルのエントリ数が負荷係数と現在の容量との積を超えた場合は、rehash
メソッドを呼び出して容量を増やすことができます。
通常、デフォルトの負荷係数 (.75) では、時間コストとスペースコストの釣り合いを取ります。この値を大きくするとスペースのオーバーヘッドは減少しますが、エントリを参照するための時間のコストは増加し、get および put を含むほとんどの Hashtable オペレーションが影響を受けます。
初期容量により、浪費スペースと (時間のかかる) rehash
オペレーションの需要との間の釣り合いが制御されます。初期容量が、Hashtable の格納するエントリの最大数を負荷係数で割った値より大きい場合、rehash
オペレーションは起こりません。ただし、初期容量を高く設定しすぎると、スペースの浪費になります。
Hashtable
に多くのエントリを入れる場合は、このテーブルを十分に大きな容量で作成する方が、必要に応じてハッシュを自動的にやり直してテーブルを大きくするよりも、エントリを効率的に挿入することができます。
この例は、数値のハッシュテーブルを作成します。この例では、数値の名前をキーとして使います。
Hashtable numbers = new Hashtable(); numbers.put("one", new Integer(1)); numbers.put("two", new Integer(2)); numbers.put("three", new Integer(3));
数値を取り出すには、次のコードを使います。
Integer n = (Integer)numbers.get("two"); if (n != null) { System.out.println("two = " + n); }
Java 2 プラットフォーム 1.2 では、このクラスは Map を実装するために改良されているため、Java Collections Framework の一部になります。新しいコレクションの実装とは異なり、Hashtable
は同期をとります。
Hashtable のコレクションビューメソッドによって返される Collection の iterator メソッドおよび listIterator メソッドが返す Iterator は、「フェイルファスト」です。Iterator の作成後に、Iterator 自体の remove または add メソッド以外の方法で Hashtable を構造的に変更すると、Iterator は ConcurrentModificationException をスローします。したがって、並行して変更が行われると、Iterator は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。Hashtable のキーメソッドおよび値メソッドによって返される Enumeration は、フェイルファストではありません。
通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、反復子のフェイルファストの動作を保証することはできません。フェイルファスト反復子は最善努力原則に基づき、ConcurrentModificationException をスローします。したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。反復子のフェイルファストの動作はバグを検出するためにのみ使用するべきです。
このクラスは、Java Collections Framework のメンバーです。
Object.equals(java.lang.Object)
,
Object.hashCode()
,
rehash()
,
Collection
,
Map
,
HashMap
,
TreeMap
,
直列化された形式コンストラクタの概要 | |
---|---|
Hashtable()
デフォルトの初期容量 (11) および負荷係数 (0.75) で新しい空のハッシュテーブルを生成します。 |
|
Hashtable(int initialCapacity)
指定された初期容量およびデフォルトの負荷係数 (0.75) で新しい空のハッシュテーブルを生成します。 |
|
Hashtable(int initialCapacity,
float loadFactor)
指定された初期容量と負荷係数で新しい空のハッシュテーブルを生成します。 |
|
Hashtable(Map t)
指定された Map と同じマッピングで新しいハッシュテーブルを生成します。 |
メソッドの概要 | |
---|---|
void |
clear()
このハッシュテーブルを消去して、キーがない状態にします。 |
Object |
clone()
ハッシュテーブルのコピーを作成します。 |
boolean |
contains(Object value)
指定された値にマップされているキーが、ハッシュテーブルにあるかどうかを判定します。 |
boolean |
containsKey(Object key)
指定されたオブジェクトが、ハッシュテーブルのキーかどうかを判定します。 |
boolean |
containsValue(Object value)
Hashtable が 1 つまたは複数のキーをこの値にマッピングする場合に true を返します。 |
Enumeration |
elements()
ハッシュテーブルにある値のリストを返します。 |
Set |
entrySet()
この Hashtable に含まれているエントリの Set ビューを返します。 |
boolean |
equals(Object o)
Map インタフェースでの定義に従って、指定された Object とこの Map を比較して等しいかどうかを判定します。 |
Object |
get(Object key)
指定されたキーにマップされている、ハッシュテーブルの値を返します。 |
int |
hashCode()
Map インタフェースの定義に従って、この Map のハッシュコード値を返します。 |
boolean |
isEmpty()
値にマップされているキーが、ハッシュテーブルにあるかどうかを判定します。 |
Enumeration |
keys()
ハッシュテーブルにあるキーのリストを返します。 |
Set |
keySet()
Hashtable に含まれているキーの Set ビューを返します。 |
Object |
put(Object key,
Object value)
ハッシュテーブルにおいて、指定された key を、指定された value にマップします。 |
void |
putAll(Map t)
指定された Map から Hashtable にすべてのマッピングをコピーします。 |
protected void |
rehash()
ハッシュテーブルの容量を増やし、それを内部的に再編成して、エントリを調整してアクセスをより効率的にします。 |
Object |
remove(Object key)
キー (およびそれに対応する値) をハッシュテーブルから削除します。 |
int |
size()
ハッシュテーブルにあるキーの数を返します。 |
String |
toString()
Hashtable オブジェクトの文字列表現を、ASCII 文字「, 」(コンマとスペース) で区切られ括弧で囲んだエントリのセットの形式で返します。 |
Collection |
values()
この Hashtable 内に保持されている値の 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
- 初期容量が 0 より小さい場合public Hashtable()
public Hashtable(Map t)
t
- マッピングがこのマップに配置されるマップ
NullPointerException
- 指定されたマップが null の場合メソッドの詳細 |
---|
public int size()
Map
内の size
Dictionary
内の size
public boolean isEmpty()
Map
内の isEmpty
Dictionary
内の isEmpty
true
、そうでない場合は false
public Enumeration keys()
Dictionary
内の keys
Enumeration
,
elements()
,
keySet()
,
Map
public Enumeration elements()
Dictionary
内の elements
Enumeration
,
keys()
,
values()
,
Map
public boolean contains(Object value)
containsKey
メソッドよりも負荷がかかります。このメソッドは、機能の点で containsValue (コレクションフレームワークの Map インタフェースの一部) と同じです。
value
- 検索する値
value
引数にマッピングする場合は true
、そうでない場合は false
NullPointerException
- 値が null
の場合containsKey(Object)
,
containsValue(Object)
,
Map
public boolean containsValue(Object value)
このメソッドは、機能の点で contains (Map インタフェースに先行する) と同じです。
Map
内の containsValue
value
- ハッシュテーブルにあるかどうかを判定される値
NullPointerException
- 値が null
の場合Map
public boolean containsKey(Object key)
Map
内の containsKey
key
- 可能なキー
true
、そうでない場合は false
NullPointerException
- キーが null
の場合contains(Object)
public Object get(Object key)
Map
内の get
Dictionary
内の get
key
- ハッシュテーブルのキー
null
NullPointerException
- キーが null
の場合put(Object, Object)
protected void rehash()
public Object put(Object key, Object value)
key
を、指定された value
にマップします。キーや値は null
にすることはできません。
この値は、元のキーと等しいキーを指定して get
メソッドを呼び出すことによって取り出すことができます。
Map
内の put
Dictionary
内の put
key
- ハッシュテーブルキーvalue
- 値
null
NullPointerException
- キーまたは値が null
の場合Object.equals(Object)
,
get(Object)
public Object remove(Object key)
Map
内の remove
Dictionary
内の remove
key
- 削除するキー
null
NullPointerException
- キーが null
の場合public void putAll(Map t)
Map
内の putAll
t
- マップに格納されるマッピング
NullPointerException
- 指定されたマップが null の場合public void clear()
Map
内の clear
public Object clone()
Object
内の clone
Cloneable
public String toString()
Object の toString メソッドにオーバーライドします。
Object
内の toString
public Set keySet()
Map
内の keySet
public Set entrySet()
Map
内の entrySet
Map.Entry
public Collection values()
Map
内の values
public boolean equals(Object o)
Map
内の equals
Object
内の equals
o
- この Hashtable と等しいかどうかを比較するオブジェクト
Map.equals(Object)
public int hashCode()
Map
内の hashCode
Object
内の hashCode
Map.hashCode()
|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。