但是请记住,建议**不可变,而不是强制性**。 如果要将可变对象作为`HashMap`中的键,则必须确保键对象的**状态更改不会更改对象**的哈希码。 这可以通过重写`hashCode()`方法来完成。 同样,键类必须遵守[**`hashCode()`和`equals()`方法协定**](https://howtodoinjava.com/java/basics/java-hashcode-equals-methods/"Working with hashCode and equals methods in java"),以避免在运行时出现不良行为。 在链接的文章中阅读有关此约定的更多信息。
但是请记住,建议**不可变,而不是强制性**。 如果要将可变对象作为`HashMap`中的键,则必须确保键对象的**状态更改不会更改对象**的哈希码。 这可以通过覆盖`hashCode()`方法来完成。 同样,键类必须遵守[**`hashCode()`和`equals()`方法协定**](https://howtodoinjava.com/java/basics/java-hashcode-equals-methods/"Working with hashCode and equals methods in java"),以避免在运行时出现不良行为。 在链接的文章中阅读有关此约定的更多信息。
更详细的信息可在[**在此处**](https://howtodoinjava.com/java/collections/design-good-key-for-hashmap/"How to design a good key for HashMap")找到。