如果我想在Java中为给定对象生成哈希,我知道的最简单方法是使用Apache Commons HashCodeBuilder
:
public class Person {
String name;
int age;
boolean smoker;
...
public int hashCode() {
// you pick a hard-coded, randomly chosen, non-zero, odd number
// ideally different for each class
return new HashCodeBuilder(17, 37).
append(name).
append(age).
append(smoker).
toHashCode();
}
}
C ++中有类似内容吗?
答案 0 :(得分:7)
答案 1 :(得分:0)
顺便说一句,hashCode方法不返回对象的标识符。这是一个普遍的误解。没有什么可以阻止同一类的2个对象返回相同的值。 hashCode用于散列表数据结构,而不是用于标识对象。这是两个不同的概念。