-5

为什么更喜欢使用代表哈希表中特定对象的字符串和包装器而不是使用实际对象本身?

4

1 回答 1

4

这个问题有点含糊,但也许这会有所帮助:

  • 密钥必须是不可变的。String (Integer, Long) 非常适合这个。(当然,如果您稍后将对象更改为不再匹配键,这将无济于事)。

  • 密钥必须实现 hashCode/equals 合约。String (Integer, Long) 已经这样做了。

  • 您可以按键查找,而无需创建自定义对象的实例。

因此,如果您正在键入自定义对象的属性或计算值,则使用“原始”内置类来表示该派生值是方便(且安全)的。

事实上,很少需要或建议使用自定义类作为哈希表,您可以使用字符串、整数和长整数来覆盖几乎所有内容(常见的例外:元组,Java 没有好的内置类,而数组则没有t 用作哈希键)。

于 2012-07-29T00:13:26.060 回答