Hashcode比较问题

Abh*_*bhi 1 java hashcode

我有一个对象的列表,在我们的例子中被称为规则,这个对象本身是一个字段列表,我必须对其进行哈希码比较,因为我们不能在系统中复制规则.

即假设我有两个规则R1和R2,字段为A和B.

现在,如果R1中A和B的值分别为7和2.

在R2中它分别是3和4然后我用来检查系统中规则的重复性的过程是哈希码比较失败

我使用的方法是

for(Rule rule : rules){
changeableAttrCode=0;

fieldCounter=1;

attributes = rule.getAttributes();

for(RuleField ruleField : attributes){

changeableAttrCode = changeableAttrCode + (fieldCounter * ruleField.getValue().hashCode());

fieldCounter++;

}
parameters = rule.getParameters();

for(RuleField ruleField : parameters){

changeableAttrCode = changeableAttrCode + (fieldCounter * ruleField.getValue().hashCode());

fieldCounter++;

}

changeableAttrCodes.add(changeableAttrCode);
Run Code Online (Sandbox Code Playgroud)

这里是changeableAttrCodes,我们存储所有规则的哈希码.

那么请建议我更好的方法,以便将来不会出现这种问题,也可以看出系统中的规则错误.

提前致谢

Tho*_*zer 5

hashcode()并不意味着用于检查平等.return 42;是一个完全有效的实现hashcode().为什么不在规则对象中覆盖equals()(并且hashcode()就此而言)并使用它来检查两个规则是否相等?您仍然可以使用哈希码来检查需要调查哪些对象,因为两个equal()对象应始终具有相同的哈希码,但这是您可能需要或可能不需要的性能改进,具体取决于您的系统.