twu*_*twu 3 java hash hashcode
如果我只需要比较对象而不打算将对象放入任何基于散列的容器中,我是否只能实现equals()而不是hashCode()?
似乎所有Java圣经都说这两个必须一起实现.:(
我担心: - 如果我总是将equif()与hashCode()一起实现,那么将会有很多代码没有真正使用,并且没有单元测试覆盖.(如果不使用的话,我不打算单元测试hashCode()) - 直到我将对象放入基于散列的容器中才知道如何查找对象.直到那时我才能确定使用哪种散列策略.
你可以,但是你将违反一般合同equals
,这将导致奇怪的错误.即使你不认为你正在使用哈希码,你传递对象的任何外部代码也可能依赖于它们,即使它似乎不是基于哈希的.如果你不打算给你的对象一个合适的哈希方法,至少让它抛出一个运行时异常.但是,为对象提供一个不错的hashCode几乎总是更好.
归档时间: |
|
查看次数: |
4418 次 |
最近记录: |