Dictionary
とHashtable
の違いは何ですか?また、JavaのDictionary
クラスを使用するにはどうすればよいですか?ハッシュテーブルと辞書の違いは何ですか?
答えて
は、Hashtable
の抽象基本クラスです。どちらも古いコードとの後方互換性のためにJDKに残っています。 HashMap
と、Java 1.2で導入されたMap
インタフェースの他の実装を使用することが期待されています。
Hashtableはスレッドセーフであるのに対して、HashMapはスレッドセーフであると述べる価値があります。私の答えを見てください。 – assylias
マップを実装するためにHashtableが改装されました。 – user2864740
は、私はあなたが求める答えが含まれているOOPの原則に関する講義を発見しました:
EDIT:
辞書 大きなテーマでコンピューティングはストレージ/検索/除去のテーマです:データを後で検索してdもはや必要がなくなった場合には、そのすべてを最も効率的に処理します。これらのコンピューティング活動の抽象化は、以下のようにインタフェースとしてJavaで表現された、辞書と呼ばれる概念に具体化されています。
ハッシュテーブル ハッシュテーブルは通常の配列の一般化です。 ハッシュテーブル は、通常、キーの数に比例したサイズの配列を使用するため、実際に格納されるキーの数が可能なキーの総数に対して小さい場合、配列を直接アドレス指定する代わりに有効な になります。 実際に格納されます。 キーを配列インデックスとして直接使用する代わりに、キーから配列インデックスが計算されます。 ハッシングでは、キーkを持つ要素がスロットh(k)に格納されます。すなわち、ハッシュ関数hを用いて、鍵kからスロットを計算する。 > {0、1、...、M - - 1}
U: H: Hは、ハッシュテーブルT [0..m-1]のスロットにキーの集合UをマッピングDictionaryクラスは、キーを値にマップするHashtableなど、任意のクラスの抽象親です。すべてのキーとすべての値はオブジェクトです。いずれかのDictionaryオブジェクトでは、すべてのキーは最大でも1つの値に関連付けられます。ディクショナリとキーを指定すると、関連する要素を参照できます。 nullでないオブジェクトはキーとしても値としても使用できます。
Dictionaryのjavadocはあなたの答えがあります。
Dictionaryクラスは、キーを値にマッピングするHashtableなどの任意のクラスの抽象親です。
abstract
クラスであるため、Dictionary
で直接動作しません。
注:
はまた、同じドキュメントから、次の点に注意してください。このクラスは廃止されました。新しい実装では、このクラスを拡張するのではなく、Mapインターフェイスを実装する必要があります。
Hashtable
は、Dictionary
の実装です。 Dictionary
は抽象クラスなので直接使用することはできません。
Map
インターフェイスと実装クラス(そのうちHashMap
が最も一般的です)によって置き換えられているため、どちらも使用しないでください。
辞書のjavadocによると:
注:このクラスは廃止されました。新しい実装では、このクラスを拡張するのではなく、 マップインターフェイスを実装する必要があります。
HashtableもJDK 1.0のビンテージです。 Mapインターフェースとそのより現代的な実装であるHashMapとTreeMapを好むべきです。
Dictionary
は、抽象クラスHashtable
のスーパークラスです。 はそのままobsoleteです。 は、ハッシュテーブルについては、そのようなHashMap
など他のマップの上に持っていた利点は、スレッドセーフでしたが、Java 1.5以降のConcurrentHashMapの導入により、もはやそれを使用する本当の理由はありません - のようjavadoc
を見ますJava 2プラットフォームv1.2では、Mapインタフェースを実装するためにこのクラスを改装し、Java Collections Frameworkのメンバーにしました。新しいコレクションの実装とは異なり、Hashtableは同期されています。スレッドセーフな実装が必要ない場合は、Hashtableの代わりにHashMapを使用することをお勧めします。スレッドセーフな並行実装を望む場合は、Hashtableの代わりにConcurrentHashMapを使用することをお勧めします。あなたが本当に互換性のために持っていない限り、あなたのマップを同時に使用されている場合は、スレッドの安全性、または
ConcurrentHashMap
を必要としない場合HashMap
のいずれかを使用し、Dictionary
またはHashtable
を使用しないでください:要約で
環境。
- 1. 辞書と配列の違いは何ですか?
- 2. スレッド安全性に関して辞書とハッシュテーブルの相違点
- 3. ハッシュテーブルのチェーニングとプロービングの違いは何ですか?
- 4. ハッシュマップ、ハッシュセット、ハッシュ辞書の違いは何ですか?
- 5. オブジェクトと辞書の違いは?
- 6. CA2227辞書とは何ですか?
- 7. 山車を使用するハッシュテーブル/辞書/
- 8. json辞書とハッシュの違い
- 9. 違い\\ URLを書くの違いは何ですか
- 10. 時間と空間に関して最も良いのはブルームフィルタ、ハッシュテーブル、または辞書ですか?
- 11. C#でハッシュテーブルを辞書に変換する
- 12. memcacheとpython辞書の相違点
- 13. 接頭辞なしのtargetNamespaceとxmlnsの違いは何ですか?
- 14. 辞書操作でのaddと[]の違い
- 15. WCFの辞書内にハッシュテーブルを送り返す
- 16. 辞書圧縮サポートとは何ですか?
- 17. OOPの辞書オブ辞書ですか?
- 18. Python辞書をJavaScriptのハッシュテーブルに変換するにはどうすればよいですか?
- 19. difftimeと ' - 'の違いは何ですか?
- 20. A`と ``の違いは何ですか[:] `
- 21. `&`と `ref`の違いは何ですか?
- 22. バックスティックと$()の違いは何ですか?
- 23. `##`と `hashCode`の違いは何ですか?
- 24. "$^N"と "$ +"の違いは何ですか?
- 25. #{} $ {}と%{}の違いは何ですか?
- 26. typedefとの違いは何ですか?
- 27. %Qと%{}の違いは何ですか?
- 28. `==`と `is`の違いは何ですか?
- 29. $と$$の違いは何ですか?
- 30. NodeJS:「./ ..」と「..」の違いは何ですか?
グーグルにはたくさんのものがあります - http://docs.oracle.com/javase/tutorial/collections/implementations/index.html – Vic
そして、on stackoverflow - http://stackoverflow.com/questions/267312/difference-a-hashmap-and-a-dictionary-adt – Vic
選択肢がある場合、 'Dictionary'の代わりに' Map'を使うべきです。これは時代遅れです。 – assylias