我有以下代码:为什么containsKey找不到密钥?
payoffs2exchanges.put(point, exchange);
if (!payoffs2exchanges.containsKey(point)) {
game.log.fine("yes");
} else {
game.log.fine("no");
}
输出 “不”。换句话说,我将键值对添加到地图上,然后,在此之后,我检查密钥是否存在并发现它不存在。为什么?
我仍然有问题的关键。下面的代码说每次我添加一个密钥,我添加一个新的密钥。而且我知道事实并非如此。
Integer[] point = new Integer[2];
point[0] = proposerBestScore;
point[1] = responderBestScore;
game.log.fine("In the getCloudOfPayoffs: found payoffs:" + point[0] + "," + point[1] + ". Exchange: " + exchange[0]+","+exchange[1]+","+exchange[2]+","+exchange[3]+","+exchange[4]);
// With the following block we ensure that every options (pair of payoffs) is represented by exchange with minimal number of moves.
if (!payoffs2exchanges.containsKey(point)) {
payoffs2exchanges.put(point, exchange);
game.log.fine("In the getCloudOfPayoffs: this option is new. We add it to the map.");
} else {
game.log.fine("In the getCloudOfPayoffs: this option is old.");
Integer[] exchangeFromMap = payoffs2exchanges.get(point);
Integer newSum = 0;
Integer oldSum = 0;
for (int i=0;i<Design.nColors;i++) {
newSum = newSum + Math.abs(exchange[i]);
oldSum = oldSum + Math.abs(exchangeFromMap[i]);
}
if (newSum<oldSum) {
game.log.fine("In the getCloudOfPayoffs: the new exchange is better than the old one.");
payoffs2exchanges.put(point, exchange);
}
}
什么类是'point'?定制课程? 'payoffs2exchanges'是什么类? – 2010-12-10 15:44:16
添加了一个解答您的更新的答案。 – aioobe 2010-12-10 16:02:52
@aioobe,抱歉对这些问题的操作。我把它放回去了。所以,你的回答很有用。 – Roman 2010-12-10 16:07:24