私はハッシュマップ(時間のための複雑性O(1))の値を取得するためのキーを知っている必要があります場合は、なぜそれがインデックス(O(1)と同様)を知ったときに、配列内の値を取得するよりも何が違うのですか?
換言すれば、ハッシュマップは、ルックアップのためにO(1)複雑性を有すると考えられるが、鍵が知られているためであるています。これは、インデックスが知られている配列と同じである - 私はそれがOハッシュマップのキーを知らないのと同じである(n)と、それのO(n)と同様になり、インデックスがわからない場合(のcontainsValue(Object値)メソッド)。
ハッシュマップは、ルックアップのために、より効率的であると考えられている理由はそのため、私は理解していません。
私はこれを理解するための良い方法は、実際のユースケースを使用していると思います。あなたが学生の名前と彼のマークを保存したいとしましょう。
だから、2つのフィールドがあります。
String name
Integer marks
今、あなたは生徒の名前に基づいて、マークを検索したいです。
配列のように、あなたは情報の両方を保持し、配列に入れてクラスを作成します。
今、あなたは配列全体を反復する必要があるか、どのような指標で特定の名前が格納されていることを知っておく必要がありますいずれか、生徒の名前のマークを確認してください。これらの両方は、O(N)複雑です。
それともとしてキーでマップに格納できます名前などと値をマーク。あなたはO(1)複雑で名前をマップに調べることができます。
TL; DR。あなたのユースケースを見ると、あなたが(順序付けされたインデックスに基づいて、ルックアップ)配列を扱うことができるかどうかを決定する必要があります。また、実際に検索のための地図を必要としています。