我知道,一般来说,您应该只使用不可变对象作为哈希图的键,因为如果它们的地址或内容发生变化,那么哈希就会中断。这就是为什么普通的 List 不应该用作 Java 中的 hashmap 的键的原因之一。但是,函数 List.of() 返回一个不可变列表。
使用 List.of() 返回的列表作为 HashMap 中的键是个好习惯吗?
简单的答案是用Java,不推荐。
原因如下:
即使列表是不可变的,列表中的对象也可能是可变的。如果列表的内容发生变化,列表的哈希码可能会发生变化,从而导致 HashMap 出现问题。
哈希码计算:列表的哈希码是根据其元素的哈希码计算的。如果列表的任何组件发生更改,则列表的哈希码也会更改。这可能会导致 HashMap 中的不一致。
使用简单、不可变的对象通常是更好的做法。例如:字符串、整数、UUID。