java - HashMap的key值不允许重复问题
高洛峰
高洛峰 2017-04-18 10:43:24
0
2
857
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(2)
Peter_Zhu

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

いいねを押す +0
洪涛

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

リーリー

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート