gpt4 book ai didi

java - 并发修改异常;无法修复

转载 作者:行者123 更新时间:2023-12-02 06:10:17 25 4
gpt4 key购买 nike

我正在为游戏服务器 API 开发一个名为 Bukkit 的插件;该插件允许玩家玩迷你游戏 - 游戏中的游戏。

我面临的问题是停止游戏。当游戏停止时,它会循环遍历该游戏中的所有玩家,然后将其删除。问题是,当玩家被删除时,他们就会从竞技场列表中删除。这个竞技场列表就是正在循环的内容;导致ConcurrentModificationException。

这是我的代码:

ArrayList<String> players = new ArrayList<String>(arena.getPlayers());        
for(String player : players){
removePlayer(Bukkit.getPlayer(player));
}

在removePlayer函数中,玩家将从arena.getPlayers()中删除。

如有任何帮助,我们将不胜感激。

编辑:这是 github 存储库 https://github.com/MCMedia/GunGames/blob/master/src/com/ViralAftermath/GunGame/Arena/ArenaManager.java

最佳答案

当您对某个项目进行迭代时,无法从 ArrayList 中删除该项目。

您应该更改代码以使用迭代器,然后调用 .remove ()

类似于

 Iterator <String> it = players.iterator ();
while (it.hasNext ()) it.remove ();

它将删除玩家身上的所有元素。但你可以使用更好的方法来清除数组。

它将解决您的问题,当然您应该将此示例改编为您的实际代码。但是当您从正在读取的 ArrayList 中删除一个项目时,就会出现问题。您应该使用适当的 .remove 项目或使用索引..

关于java - 并发修改异常;无法修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21955506/

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