<分区>
假设我有一个具有 String 类成员的 POJO:
class POJO {
String name, address, emailId;
equals() {
}
hashCode() {
// How?
}
}
我如何组合我的字符串的 hashCode
以形成 POJO 的 hashCode
?
<分区>
假设我有一个具有 String 类成员的 POJO:
class POJO {
String name, address, emailId;
equals() {
}
hashCode() {
// How?
}
}
我如何组合我的字符串的 hashCode
以形成 POJO 的 hashCode
?
最佳答案
Java 7 有一个实用方法来创建适合大多数用途的哈希码:
return Objects.hash(name, address, emailId);
您仍然需要确保您的 equals 方法是一致的。这两种方法可能如下所示:
@Override
public int hashCode() {
return Objects.hash(name, address, emailId);
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
final POJO other = (POJO) obj;
if (!Objects.equals(this.name, other.name)) return false;
if (!Objects.equals(this.address, other.address)) return false;
if (!Objects.equals(this.emailId, other.emailId)) return false;
return true;
}
关于java - 如何通过组合键的哈希码来计算 Pojo 的哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18052565/
相关文章:
java - Effective Java hashCode() 实现中的位移位
java - 创建后如何使用StoredProcedure在数据库中设置存储过程的名称
java - 在 Eclipse Neon 上运行 Apache UIMA Ruta Workbench 2.5.0 时出错
java - NoClassDefFound错误: org/apache/nifi/registry/VariableRegistry while running nifi test cases
Java - 如何撤消 hashCode() 并读取为字符串?
java - 即使使用 INNER JOIN FETCH 查询也会出现意外的 JavaAssistLazyInitializer