web-dev-qa-db-ja.com

HashMapと辞書ADTの違い

ハッシュマップと辞書ADTの違いは何ですか。そして、いつ別のものを好むか。プログラミングの課題では、インストラクターがそのうちの1つを使用するように求めましたが、両者の間に違いは見当たりません。プログラムは巨大なノーで動作するはずです。文字列の。助言がありますか?

60
ashokgelal

Javaの観点では、クラスHashMapとクラスDictionaryは両方とも、「Map」抽象データのimplementationsです。タイプ。抽象データ型は特定のプログラミング言語に固有ではなく、Map ADTはハッシュ、辞書、または連想配列( http://en.wikipedia.org/wikiのその他)としても知られています/ Associative_array )。 (Dictionaryクラスと辞書ADTを区別していることに注意してください。)

Dictionaryclassは廃止とマークされているため、使用しないことが最善です。

62
serenader

このStack Overflowの投稿は、主な違いを説明するのに適しています。

Javaハッシュマップとハッシュテーブル

Hashtableは、単に辞書ADTの実装であることに注意してください。また、Javaは辞書 "obsolete" と見なされることに注意してください。

Hashtableが同期されているという事実は、ほとんどの用途であまり買われません。 HashMapを使用します。

18
Jim Nelson

In Java HashMapはMapインターフェースを実装しますが、Dictionaryは実装しません。これにより、Dictionaryは廃止されます(APIのドキュメントによる)。 HashMapは辞書の一種です。

ただし、HashMapを使用することをお勧めします。

8

MapはJavaのADTのインターフェースであり、<key、value>ペアを維持するための同じ一般的な言語に依存しないデータ構造であり、=で導入されていますJava 1.2。

辞書(Mapの実装ではない)は、JDK 1.0で以前に導入されたのと同じ目的の抽象クラスです。唯一のサブクラスはHashtableであり、それ自体がMapを実装しています。それにもかかわらず、Dictionaryクラスは現在廃止されており、忘れてしまうかもしれません。

MapとDictionaryの関数メンバーには違いがありますが、HashMapとHashtableの違いの方が役立つ場合があります。 ここ 違いを見つけることができます。

0
masec