gpt4 book ai didi

java和线程: very strange behaviour

转载 作者:行者123 更新时间:2023-12-01 06:48:09 28 4
gpt4 key购买 nike

        private synchronized Map<Team, StandingRow> calculateStanding() {
System.out.println("Calculate standing for group " + getName());
Map<Team, StandingRow> standing = new LinkedHashMap<Team, StandingRow>();

for (Team team : teams) {
standing.put(team, new StandingRow(team));
}

StandingRow homeTeamRow, awayTeamRow;
for (Match match : matches.values()) {

homeTeamRow = standing.get(match.getHomeTeam());
awayTeamRow = standing.get(match.getAwayTeam());

System.out.println("Contains key for " + match.getHomeTeam() + ": " + standing.containsKey(match.getHomeTeam()));
System.out.println("Contains key for " + match.getAwayTeam() + ": " + standing.containsKey(match.getAwayTeam()));
}
}

这是我的代码。 matches 包含 6 个元素,但问题是,在两次匹配之后,站立 map 中不再找到任何键。

输出例如

Contains key for Zuid-Afrika: true
Contains key for Mexico: true
Contains key for Uruguay: true
Contains key for Frankrijk: true
Contains key for Zuid-Afrika: false
Contains key for Uruguay: false
Contains key for Frankrijk: false
Contains key for Mexico: false
Contains key for Mexico: false
Contains key for Uruguay: false
Contains key for Frankrijk: false
Contains key for Zuid-Afrika: false

这是在线程环境中,但是该方法是同步的,所以我认为这不会产生问题?我还对该方法进行了一个简单的单元测试,效果很好。

最佳答案

这几乎肯定不是线程问题。我几乎可以肯定问题出在您的团队类(class)中。它可能没有以正确的方式实现hashCode()/equals()。查看这两个方法的 javadoc 并相应地实现它们。

关于java和线程: very strange behaviour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2682276/

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