这是我的HashMap
HashMap<Literal, Double> literalHashMap = new HashMap<>();
for(Literal literal : literalHashSet) {
if(literal.isTrue(node.state)){ literalHashMap.put(literal, 0.0);}
else{literalHashMap.put(literal, Double.MAX_VALUE);}
}
然后当我这样做
literalHashMap.put((Literal)proposition, updatedCost);
但是当我这样做时
cost += literalHashMap.get(proposition)
我看到一条警告,提示对hashmap.get的可疑呼叫
任何想法如何解决?
谢谢
最佳答案
之所以说是可疑呼叫,是因为您传递了一个Literal
对象作为密钥(literalHashMap.put((Literal)proposition, updatedCost);
下调了命题,因此它变成了Literal
对象)。因此,我可以假定proposition
不是Literal
对象。但是,将proposition
作为键传递给HashMap
,这完全是另一种对象。要解决此问题:cost += literalHashMap.get((Literal) proposition);
。或者,为了节省一点时间:
Literal lit = (Literal) proposition;
literalHashMap.put((lit, updatedCost);
cost += literalHashMap.get(list);
避免两次下垂。