-1

私はこれらについてかなり読んだことがありますが、まだ 1 つの面でかなり混乱しています。HashMaps は K,V ペアを取ります。なぜこれが必要なのですか?

たとえば、「abracadabra」を HashMap myMap に追加したいとします。

String.hashCode() 関数をキーとして使用し、次に「abracadabra」を値として使用しませんか?

そして、「abracadabra」が存在するかどうかを調べようとすると、その hashCode の「バケット」が空でないかどうかがチェックされ、空である場合は、その「バケット」内のすべてが繰り返されます (最悪の場合 O(n).. .しかし、実際にはそうではありません)。だから私が言っているのは、オブジェクトの .hashCode() 関数がキーではなく、オブジェクトがハッシュコードではないということですか? 明示的なキーを宣言する必要があるのはなぜですか?

K,Vペアを持つ目的は何ですか? 私はこれを何度も説明してもらい、複数の記事/例/などを読みました。私はまだ分厚い頭蓋骨を通り抜けることができません。

4

4 に答える 4

0

私の理解が正しければ、HashMap によって達成される HashSet の機能が必要です。HashSetのドキュメントを見てください。おそらくそれがあなたが探しているものです。

ヒントを提供するために、HashMap は異なる動作をします。同じ文字列 (等しい hashCode を使用) を異なるキーで格納できます。

String myString = "hallo";
HashMap<String,String> map = new HashMap<String,String>();
map.put("key1", myString);
map.put("key2", myString);
于 2013-03-16T22:37:22.950 に答える
0

ハッシュマップは、キー(あなたの場合はabracadabra)からオブジェクトへのマッピングです。これは、ユーザーを識別する ID などの別の場所からキーを取得し、そのユーザーの追加データをロードする必要がある場合に便利です。

あなたが説明したことは、HashSetのように聞こえます

于 2013-03-16T22:33:39.970 に答える
0

間違ったオブジェクトを探しています: HashMaps は、単一のオブジェクト (たとえば、文字列 "abracadabra") を格納するようには設計されていません。実際、両方の部分が重要なキーと値のペアを格納するように設計されています。簡単な例は、プロパティ ストア: プロパティ名がキーで、プロパティ値が値です。

本当に 1 つのオブジェクトだけを格納したい場合は、他の構造を調べてください。ハッシュセットが思い浮かびます。

于 2013-03-16T22:34:40.167 に答える
0

AhashCodeだけでは値を検索するのに十分ではありません: 異なるキーが同じ を持つことができますhashCode。を持つことのポイントはhashCode、ハッシュテーブルがそのキーその値のエントリを持つ場所をすばやく絞り込むことだけです。

于 2013-03-16T23:29:13.460 に答える