我应该用什么来跟踪java中可变对象的详细信息

我应该用什么来跟踪java中可变对象的详细信息,java,Java,我想在模拟中存储有关人员对象的信用历史记录信息 我想使用HashMap,但是JavaAPI说我应该小心使用HashMap来跟踪可变对象(比如我的程序中的信用历史记录) 有更好的结构吗 注意事项仅适用于键——如果更改了影响hashCode()或equals()行为的任何键,则会破坏哈希映射,无法再次找到键。对于价值观,你可以自由地做任何你想做的事情。修改值是否会更改映射的语义取决于您。注意事项仅适用于键——如果您更改了影响hashCode()或equals()行为的任何键,则会破坏哈希映射,无法

我想在模拟中存储有关人员对象的信用历史记录信息

我想使用
HashMap
,但是JavaAPI说我应该小心使用HashMap来跟踪可变对象(比如我的程序中的信用历史记录)


有更好的结构吗

注意事项仅适用于键——如果更改了影响
hashCode()
equals()
行为的任何键,则会破坏哈希映射,无法再次找到键。对于价值观,你可以自由地做任何你想做的事情。修改值是否会更改映射的语义取决于您。

注意事项仅适用于键——如果您更改了影响
hashCode()
equals()
行为的任何键,则会破坏哈希映射,无法再次找到键。对于价值观,你可以自由地做任何你想做的事情。如果修改值会更改地图的语义,则由您决定。

除非您计划经常修改
Person
对象,否则您应该没事

API说要小心使用可变对象作为键。这是因为当密钥更改时,严格的逻辑可能会失败。如果你的程序设计正确,你会没事的


如果您只是更改
CreditHistory
对象,那么这是最好的结构,而且(在我看来)是最容易使用的。

除非您计划经常修改
Person
对象,否则您应该没事

API说要小心使用可变对象作为键。这是因为当密钥更改时,严格的逻辑可能会失败。如果你的程序设计正确,你会没事的


如果您只是更改
CreditHistory
对象,那么这是最好的结构,而且(在我看来)是最容易使用的。

文档有时会说一些奇怪的事情……除非您计划修改密钥,否则这并不是一个真正的问题。你可以随意修改这些值。只需将信用信息发送给我,我会跟踪它。文档有时会说一些奇怪的事情……除非你计划修改密钥,否则这不是一个真正的问题。您可以随意修改这些值。只需将信用信息发送给我,我会跟踪它。我确实需要修改Person对象。我是否应该从Object()重写hashCode()函数以返回人物的字符串uniqueID?或者,我也可以使用字符串uniqueID作为映射的键一般来说,使用复杂的可变对象作为键不是一个好主意。使用作为值唯一标识符的不可变项。在你的例子中,如果一个人的
唯一ID
不能更改,那么它就是一个很好的候选。我必须修改person对象。我是否应该从Object()重写hashCode()函数以返回人物的字符串uniqueID?或者,我也可以使用字符串uniqueID作为映射的键一般来说,使用复杂的可变对象作为键不是一个好主意。使用作为值唯一标识符的不可变项。在您的情况下,如果一个人的
唯一ID
无法更改,那么它就是一个很好的候选人。