【初心者】Java質問・相談スレ6【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0311デフォルトの名無しさん
NGNGHashtableはJDK1.0時代からある古い形式のコレクションクラス。
HashMap,HashSetはJDK1.2から導入された。
ほかのMapやSetのシリーズとインターフェースが統一されている。
古い形式のHashtableなどは複数スレッドから同時アクセスの際に
デフォルトでsynchronizedで同期化されているのに対し
新しい形式のコレクションクラスはこれを実装していない。
なぜなら同期化は少なからず実行速度に影響があるにも関わらず
不必要な状況も多く、これを選択できないのは理不尽だからである。
新しい形式で同期化されたコレクションが必要な場合は下記のように
同期化されたバージョンのインスタンスを取得するようにする。
Map m = Collections.synchronizedMap(new HashMap(...));
Mapシリーズのコレクションは検索に使用するKeyオブジェクトと
取得する値のオブジェクトが異なるような場合に使用する。
たとえば辞書の見出しと本文のような。
SetシリーズはKeyそのものが使用するデータでもあるときに使用する。
■ このスレッドは過去ログ倉庫に格納されています