计算 Map
的哈希码的最佳方法是什么? ,知道它可能包含以下类型的条目值: String
, Integer
, Object[]
...?
Map.hashCode()
返回浅哈希码。这意味着如果您有 String[]
在您的 map 中,Map.hashCode()
还将使用 String[]
返回的哈希值。不幸的是,这不是我想要的(Object.hashCode()
实现)。但我想要Arrays.hashCode(String[])
实现。
那么处理这个问题的最佳通用方法是什么?
最佳答案
如果您需要知道两个映射是否包含相同的值,您将需要编写一个深度比较方法。你不应该依赖 hashCode。
即使使用完美的算法,每个可能对象的每个可能集合也无法由单个有符号整数唯一表示。
哈希码仅用于集合中使用时减少冲突,不应该用于唯一标识对象。
关于Java Map 哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4411637/