这是我的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);


避免两次下垂。

09-29 21:10