2016-09-28 9 views
2

ConcurrentHashMapの方がパフォーマンスは優れていますが、Hashtableが優れているシナリオはありますか?ハッシュテーブルがconcurrenthashmapより優れているシナリオはありますか?

+1

あなたはリンゴにリンゴを比較する必要がありますかStream(7へのJava 2を使用している場合)Iteratorに切り替えます。 'Hashtable'は遺産に過ぎず、' Hashtable'が最後に触れられて以来、 'HashMap'には多くの改良が施されていました。 –

答えて

0

Hashtableはもうを使用しないでください。 HashtableはJava 1.0のレガシーツールであり、Java 2で導入された上位コレクションフレームワークの前にあります。

単純なハッシュマップが必要な場合は、HashMapを使用してください。スレッドセーフティの実行が必要な場合は、ConcurrentHashMapを使用してください。基本的で基本的でないスレッド安全性が必要な場合は、HashMapCollections.synchronizedMap(Map)にラップしてください。

はい、このようなシナリオはHashtable documentationから

存在:

さて、実際に純粋な可能性のスペクトルを見ることなく2つの特定のクラスを比較され、そのまま質問に答える

スレッドセーフな実装が必要ない場合は、Hashtableの代わりにHashMapを使用することをお勧めします。スレッドセーフな並行実装を望む場合は、Hashtableの代わりにConcurrentHashMapを使用することをお勧めします。

  1. そうです、Hashtableあなたがスレッドセーフな実装を必要とするが、「欲望」高同時実装をないシナリオに適しています。これは、厳密には、ConcurrentHashMapHashtableとの間の排他的比較である。あなたがEnumerationが必要な場合は、他のMapCollections.enumeration(...)を通過する必要がありながら

  2. はまた、[1]、Hashtableは、直接サポートしています。


1. Enumerationまた、Java 1.0クラスです。 (8+ Javaを使用している場合) `Collections.synchronizedMap(新しいHashMapの())`と `ConcurrentHashMap`を意味し、

+1

'synchronizedMap(new HashMap())'が 'Hashtable'よりも優れているので、これは不完全なアドバイスです。 –

+0

ハッシュテーブルは私の意見で時代遅れです –

関連する問題