我有HashMap<JsonObject, Integer>
,其中JsonObject
属于Google的gson
库。
我注意到如果你输入一个条目,然后修改JsonObject
键(比如添加成员或其他东西),你将无法使用该条目获得条目的值。同样的关键。我怀疑这是因为hashcode
的{{1}}在您更改其成员时会发生变化。
我不确定这是否是预期的行为,但如果是,那么我对此有任何变通方法感到好奇:我想创建JsonObject
{{1}是关键。
答案 0 :(得分:1)
您认为正确无误。只有一件事是严格的,你推动的密钥不应该是可变的,否则可能无法检索到相同的密钥。所以你需要确保。
或者IdentityHashMap
可能会拯救您,因为平等条件基于==
检查,而不是equals()
。
既然你告诉hashCode发生变化,我认为地图有责任很好地分配你的对象。您可以稍后考虑性能方面的问题。