天蓬老师2017-04-18 10:45:24
Map の原理を確認することをお勧めします。
Map が値を保存するときは、オブジェクトのアドレスではなく、オブジェクトのハッシュコードを使用します。
まず、マップにキーとして p1 を入力します。このとき、p1のハッシュコードが変更されているため、再度保存したところ、mapは別のキーと判断して保存しました。
PHP中文网2017-04-18 10:45:24
以下は HashMap.put の内部実装です
リーリーp1.setAge(5) の後、p1 の hashCode が変更され、上記の関数の hash(key) が変更されます。キーは同じオブジェクトですが、HashMap はそれを新しいキーとして保存します。
効率上の理由から、このシナリオはサポートされていません。これは HashMap の落とし穴とも言えます。