我有一个声明了一个哈希映射的类级别。HashMap返回NULL
public class Levels{
private final Map<Unit, Object1> rateUnitCost;
public Levels(Map<Unit, Object1> levels) {
this.rateUnitCost = new HashMap<Unit, Object1>(levels);
}
public Object1 getCoverageLevel(Unit unit, Phase aP) {
return rateUnitCost.get(unit);
}
}
我打电话getCoverageLevel从其他类()方法,我从另一个类实例化水平类rateUnitCost属性为好。
在调试器中看到我正在为rateUnitCost和单位对象找到此值。 rateUnitCost: - 哈希映射值
rateUnitCost HashMap<K,V> (id=1248)
[0] HashMap$Node<K,V> (id=1266)
key >Unit (id=1249)
amount Money (id=1267)
flags ArrayList<E> (id=1268)
procedureId 7156
ParticipationId 104152413
value >Object1 (id=1250)
现在单元对象的值低于: -
unit Unit (id=1251)
amount Money (id=1258)
flags ArrayList<E> (id=1259)
procedureId 7156
ParticipationId 104152413
当我与此对象然后其匹配项的值相匹配
。 但是在rateUnitCost.get(unit)的时候,即使Object1被设置,其返回null。 Object1正从使用以下行其他类返回: -
return new Object1();
谁能帮我解决这个谜?
BasicUnit是一个实现Unit接口的类。 BasicUnit有如下equals方法: -
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BasicUnit basicUnit = (BasicUnit) o;
if (flags != basicUnit.flags) return false;
if (procedureId != basicUnit.procedureId) return false;
if (ParticipationId != basicUnit.ParticipationId) return false;
if (amount != null ? !amount.equals(basicUnit.amount) : basicUnit.amount != null) return false;
return true;
}
和hashCode: -
public int hashCode() {
int result = procedureId;
result = 31 * result + ParticipationId;
result = 31 * result + (amount != null ? amount.hashCode() : 0);
result = 31 * result + (flags == null ? null : flags.hashCode());
return result;
}
@Manish:你能否贴上单元类的实现细节?由于Map是基于hashkey处理的。 –
@PrakashBhagat单位只是一个接口 公共接口部件延长可比 { } –
然后请粘贴实现类的细节。 –