gpt4 book ai didi

java - 尽管键不同, HashMap 条目仍会覆盖先前的条目

转载 作者:行者123 更新时间:2023-12-02 11:57:22 25 4
gpt4 key购买 nike

我在程序中遇到了 HashMap 的问题,覆盖了先前 HashMap 条目的值,尽管这两个条目具有不同的键。

    public void drawTheNumbers() {
final int NO_WIN = 0;
int playerOneTicketWinning = 0;
Tuple numberTransporter = new Tuple (0,0);
for(Journal entry : theJournal) {
playerOneTicketWinning = entry.getWinning();
if (winningsPerPlayer.containsKey(entry.getPerson())) {
numberTransporter.playerTotalWinnings = numberTransporter.playerTotalWinnings + playerOneTicketWinning;
numberTransporter.playerSimilarities = numberTransporter.playerSimilarities + entry.getSimilarities();

winningsPerPlayer.put(entry.getPerson(), numberTransporter );
}else {
numberTransporter.playerTotalWinnings = playerOneTicketWinning;
numberTransporter.playerSimilarities = entry.getSimilarities();
winningsPerPlayer.put(entry.getPerson(), numberTransporter);
}
}
for (Map.Entry<String, Tuple> player: winningsPerPlayer.entrySet()) {
int temp1 = numberTransporter.getplayerTotalWinnings();
int temp2 = NO_WIN;
if (temp1 == temp2) {
noWinMessage (player.getKey());
}else {
playerWinningsMessage(player.getKey(), numberTransporter);
}
}
}

当第二次运行此循环时,它将覆盖上述方法中的playerTotalWinnings 和playerSimilarities 的值,而且还会覆盖由winingsPerPlayer.put 创建的Hashmap 中的先前条目中的值

该键是用户在运行程序时输入的玩家名称。多个用户可以在同一 session 中运行该程序。

最佳答案

key 可能不同。但数值不是-_-°

您需要在循环内创建一个新的元组,而不是不断修改循环之前创建的元组。

通常,像元组这样的东西在创建后不需要修改,它应该使用它将包含的两个值来创建,并且永远不会改变。所以它应该是不可变的,具有最终值,这样你就可以避免这种愚蠢的错误。

关于java - 尽管键不同, HashMap 条目仍会覆盖先前的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com