映射键 - 可变或不可变

时间:2013-11-08 06:23:12

标签: java performance map

在散列/性能方面哪个更好,因为它是映射可变或不可变的关键

为什么会这样?

此致

3 个答案:

答案 0 :(得分:2)

如果对象的hashCode() / equals()可以更改,请不要使用可变对象period。它会在错误的地方,Map可能会失去它的踪迹。

答案 1 :(得分:1)

可变性对性能没有影响,只有hashCode和equals方法的实现可能会影响性能,因为散列只使用这些方法。

正如chriylis已经指出的那样,你不应该修改已放置在Map中的关键对象,因为哈希值会改变,而Map.get也无法再找到它们。

答案 2 :(得分:0)

这些没有连接。如果修改了对象,则需要将对象重新插入到地图中(删除 - 修改 - 插入)。如果您修改了一个没有删除的密钥,您将无法引用它 - 即以正常方式删除或获取密钥。