J'ai le code suivant:Pourquoi containsKey n'a pas trouvé la clé?
payoffs2exchanges.put(point, exchange);
if (!payoffs2exchanges.containsKey(point)) {
game.log.fine("yes");
} else {
game.log.fine("no");
}
Il produit "non". En d'autres termes, j'ajoute la paire clé-valeur à la carte, puis, immédiatement après, je vérifie si la clé existe et découvre qu'elle n'existe pas. Pourquoi?
J'ai toujours le problème avec la clé. Le code suivant indique chaque fois que j'ajoute une clé, j'ajoute une nouvelle clé. Et je sais que ce n'est pas le cas.
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);
}
}
De quelle classe est 'point'? Classe personnalisée? Quelle classe est 'payoffs2exchanges'? –
Ajout d'une réponse à votre mise à jour. – aioobe
@aioobe, désolé pour ces manipulations avec la question. Je le remets. Donc, vous répondez est utile. – Roman