|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.util.AbstractMap | +--java.util.WeakHashMap
ハッシュテーブルに基づいた「弱キー」による Map
実装です。WeakHashMap
内のエントリは、そのキーが普通に使われることがなくなると自動的に削除されます。より正確には、指定のキーのマッピングが存在しても、ガベージコレクタがキーを破棄するのを防ぐことはできません。つまり、キーがファイナライズ可能にされ、ファイナライズされてから、再生されるのを防ぐことはできません。キーが破棄された場合、そのエントリが事実上マップから削除されるので、このクラスはほかの Map
実装とは少し違った動作をします。
null 値と null キーはどちらともサポートされています。このクラスは HashMap
クラスと同じようなパフォーマンス特性を持ち、初期容量と負荷係数の同じ効率パラメータを持ちます。
ほとんどのコレクションクラスと同じように、このクラスは同期化されていません。同期化されている WeakHashMap
は Collections.synchronizedMap
メソッドを使って作成できます。
このクラスは、equals
メソッドが ==
演算子を使ってオブジェクト識別情報を判定するキーオブジェクトと一緒に使うことを主な目的としています。このようなキーが破棄されると二度と作り直されることはないので、それ以降に WeakHashMap
内のそのキーの検索を行なったり、そのエントリが削除されたことに不都合を感じても、対処する方法はありません。このクラスは、String
インスタンスなどのオブジェクト識別情報に基づかない equals
メソッドを持つキーオブジェクトを適切に処理します。ただし、作り直し可能なキーオブジェクトでは、キーが破棄された WeakHashMap
エントリを自動削除すると、混乱をまねく可能性があります。
WeakHashMap
クラスの動作の一部はガベージコレクタのアクションに依存するので、よく知られていても必要ではない、いくつかの Map
インバリアントはこのクラスに適しません。ガベージコレクタはキーをいつでも破棄できるので、WeakHashMap
は未知のスレッドがエントリを削除中であるかのように動作します。特に、WeakHashMap
インスタンスで同期させ、その変異メソッドのどれも呼び出さないにしても、size
メソッドはより小さな値を時間の経過とともに返すことができ、isEmpty
メソッドは指定のキーに対して false
を返してから true
を返すことができます。containsKey
メソッドは、true
を返したあとで false
を返すことができます。get
メソッドは指定のキーには値を返したあとで null
を返すことができ、put
メソッドと remove
メソッドは従来マップにあるように見えたキーに対してそれぞれ null
と false
を返すことができます。キーセット、値セット、エントリセットを続けて検査すれば連続的に出力する要素の数が少なくてすみます。
WeakHashMap
内の各キーオブジェクトは弱参照の対象として間接的に格納されています。このため、キーは、それに対する弱参照がマップの内外ともにガベージコレクタによってクリアされてからのみ自動的に削除されます。
実装上の注意: WeakHashMap
内の値オブジェクトは、通常の強参照によって保持されます。このため、値のオブジェクトが直接的にも間接的にも強くそれ自体のキーを参照しないようにしてください。そうすれば、キーが破棄されないようになります。値のオブジェクトが WeakHashMap
自体を介してそのキーを間接的に参照するようにしてください。つまり、値のオブジェクトはほかのキーオブジェクトを必ず参照し、その関連付けられている値のオブジェクトが今度は最初の値のオブジェクトのキーを必ず参照します。この問題については今後のリリースで対処する予定です。
HashMap
,
WeakReference
クラス java.util.Map から継承した内部クラス |
Map.Entry |
コンストラクタの概要 | |
WeakHashMap()
デフォルトの初期容量とデフォルトの負荷係数 ( 0.75 ) を持つ、新しい空の WeakHashMap を作成します。 |
|
WeakHashMap(int initialCapacity)
指定の初期容量とデフォルトの負荷係数 ( 0.75 ) を持つ、新しい空の WeakHashMap を作成します。 |
|
WeakHashMap(int initialCapacity,
float loadFactor)
指定の初期容量と指定の負荷係数を持つ、新しい空の WeakHashMap を作成します。 |
|
WeakHashMap(Map t)
指定された Map と同じマッピングで新しい WeakHashMap を作成します。 |
メソッドの概要 | |
void |
clear()
すべてのマッピングをマップから削除します。 |
boolean |
containsKey(Object key)
マップが指定のキーのマッピングを保持する場合に true を返します。 |
Set |
entrySet()
マップ内のマッピングの Set ビューを返します。 |
Object |
get(Object key)
マップが指定の key をマッピングする値を返します。 |
boolean |
isEmpty()
マップがキーと値のマッピングを保持しない場合に true を返します。 |
Object |
put(Object key,
Object value)
マップを更新して、指定の key が指定の value にマッピングされるようにします。 |
Object |
remove(Object key)
指定の key のマッピングがあればマップから削除します。 |
int |
size()
マップ内のキーと値のマッピングの数を返します。 |
クラス java.util.AbstractMap から継承したメソッド |
containsValue, equals, hashCode, keySet, putAll, toString, values |
クラス java.lang.Object から継承したメソッド |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
インタフェース java.util.Map から継承したメソッド |
containsValue, equals, hashCode, keySet, putAll, values |
コンストラクタの詳細 |
public WeakHashMap(int initialCapacity, float loadFactor)
WeakHashMap
を作成します。initialCapacity
- WeakHashMap
の初期容量loadFactor
- WeakHashMap
の負荷係数IllegalArgumentException
- 初期容量が 0 より小さいか、負荷係数が正ではない場合public WeakHashMap(int initialCapacity)
0.75
) を持つ、新しい空の WeakHashMap
を作成します。initialCapacity
- WeakHashMap
の初期容量IllegalArgumentException
- 初期容量が 0 より小さい場合public WeakHashMap()
0.75
) を持つ、新しい空の WeakHashMap
を作成します。public WeakHashMap(Map t)
WeakHashMap
を作成します。WeakHashMap
は、指定されたマップにあるマッピング数の 2 倍の容量または 11 (どちらか大きい方)、およびデフォルトの負荷係数 (0.75) で作成されます。t
- マッピングがこのマップに配置されるマップメソッドの詳細 |
public int size()
Map
インタフェースのほとんどの実装とは対照的に、このオペレーションで必要な時間はマップのサイズに比例します。Map
内の size
AbstractMap
内の size
java.util.Map
からコピーされたタグ:public boolean isEmpty()
true
を返します。Map
内の isEmpty
AbstractMap
内の isEmpty
java.util.Map
からコピーされたタグ:public boolean containsKey(Object key)
true
を返します。Map
内の containsKey
AbstractMap
内の containsKey
key
- マップにあるかどうかが判定されるキーpublic Object get(Object key)
key
をマッピングする値を返します。マップがこのキーの値を保持しない場合は、null
を返します。Map
内の get
AbstractMap
内の get
key
- 関連付けられている値があればそれが返されるキーpublic Object put(Object key, Object value)
key
が指定の value
にマッピングされるようにします。マップが以前に key
のマッピングを保持していた場合、そのマッピングが置き換えられ、以前の値が返されます。Map
内の put
AbstractMap
内の put
key
- 指定の value
にマッピングされるキーvalue
- 指定の key
がマッピングされる値null
public Object remove(Object key)
key
のマッピングがあればマップから削除します。Map
内の remove
AbstractMap
内の remove
key
- マッピングが削除されるキーnull
public void clear()
Map
内の clear
AbstractMap
内の clear
java.util.Map
からコピーされたタグ:UnsupportedOperationException
- clear がマップによってサポートされていない場合public Set entrySet()
Set
ビューを返します。Map
内の entrySet
AbstractMap
内の entrySet
java.util.Map
からコピーされたタグ:
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.