検索

ホームページ  >  に質問  >  本文

java - HashMap的key值不允许重复问题

高洛峰高洛峰2813日前852

全員に返信(2)返信します

  • 天蓬老师

    天蓬老师2017-04-18 10:45:24

    Map の原理を確認することをお勧めします。
    Map が値を保存するときは、オブジェクトのアドレスではなく、オブジェクトのハッシュコードを使用します。
    まず、マップにキーとして p1 を入力します。このとき、p1のハッシュコードが変更されているため、再度保存したところ、mapは別のキーと判断して保存しました。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:45:24

    以下は HashMap.put の内部実装です

    リーリー

    p1.setAge(5) の後、p1 の hashCode が変更され、上記の関数の hash(key) が変更されます。キーは同じオブジェクトですが、HashMap はそれを新しいキーとして保存します。

    効率上の理由から、このシナリオはサポートされていません。これは HashMap の落とし穴とも言えます。

    返事
    0
  • キャンセル返事