- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的类(class)如下
public class Hash {
int age;
int id;
String name;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Hash other = (Hash) obj;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
在此我只使用了两个属性 name 和 id 来生成 .equals 方法,但现在我的问题是。什么是实现 .hashCode() 方法的好方法。
两者的优缺点是什么?
最佳答案
计算哈希码的一个重要规则是您必须仅使用同样与equals()
实现相关的信息。
因为您没有在您的equals
方法中使用age
,所以在您的hashCode
中使用它是错误的!推理非常简单:
equals()
将返回 true
hashCode()
(在使用 age
的实现上)会返回两个不同的值,但是!这不意味着您必须使用所有此类信息。有时只使用一个子集有优势(例如,如果有一些大的、难以散列的对象不太可能是两个对象之间的唯一区别)。
最原始、最正确的实现是这样的:
public int hashCode() {
return 0;
}
这将是正确的,但效率极低(因为每个对象都会散列为相同的值,显然!)。
关于java - 理想的哈希码实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19446963/
从许多帖子中我可以读到有关最大池大小的公式,它取决于 CPU 的数量 + 1。这是一个明确的解释。 但是如果应用程序定义了许多执行器或线程池执行器怎么办。然后我们还必须考虑应用程序共享相同的硬件。这对
我一直在寻找垂直 Accordion 内容 slider 。我找到了一个:http://www.marghoobsuleman.com/jQuery-common-accordion ,而且还不错。我
在 not having a whole bunch of luck 之后找到任何可充当 SNMP 代理的 .NET SNMP 库(可在 OSS 项目中使用 - 这意味着专有库已经过时),我现在正在考
目前我正在考虑: VMWare 管理程序 ESXi 中央操作系统 5.5 内存缓存 1.4.5和依赖 这就是全部。我还需要什么/任何替代品吗? 最佳答案 Memcached在linux上运行的很好,所
我是一名优秀的程序员,十分优秀!