Java - Erreur lors de la suppression d'une liste de tableaux, plus d'une fois. (Exception IllegalStateException)
J'ai été googler autour pour un peu, et n'arrive pas à trouver une solution. Qu'ai-je fait de mal? Mon problème est dans le titre. Ici est l'exception-je obtenir:
java.lang.IllegalStateException
at java.util.ArrayList$Itr.remove(Unknown Source)
at me.herp.derp.client.Config.updateItem(Config.java:24)
at me.herp.derp.client.Commands.parseCommand(Commands.java:23)
at me.herp.derp.client.ChatCommands.handleChatcommand(ChatCommands.java:29)
at net.minecraft.src.EntityClientPlayerMP.sendChatMessage(EntityClientPlayerMP.java:171)
at net.minecraft.src.GuiChat.keyTyped(GuiChat.java:104)
at net.minecraft.src.GuiScreen.handleKeyboardInput(GuiScreen.java:227)
at net.minecraft.src.GuiScreen.handleInput(GuiScreen.java:176)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1494)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:843)
at net.minecraft.client.Minecraft.run(Minecraft.java:768)
at java.lang.Thread.run(Unknown Source)
Et voici mon code:
public static void updateItem(String item, String value)
{
if (!hasValue(item))
{
addItem(item, value);
return;
}
for (ConfigItem c : configItems)
{
if (c.ITEM.equals(item))
{
configItems.iterator().remove();
break;
}
}
ConfigFile.saveConfig();
}
N'avez-vous pas trouver sur google, que vous ne devez utiliser
vous êtes de droite, poster une réponse avec quelques explications à ce sujet, je suis sûr que ça va aider au moins OP et moi
Mais j'ai suis modifier...
et OP. Voir ce post - stackoverflow.com/questions/223918/.... Il explique le mieux.
merci mais le lien n'est pas bon merci de modifier.
iterator
pour itérer sur votre liste, si vous voulez le modifier?vous êtes de droite, poster une réponse avec quelques explications à ce sujet, je suis sûr que ça va aider au moins OP et moi
Mais j'ai suis modifier...
et OP. Voir ce post - stackoverflow.com/questions/223918/.... Il explique le mieux.
merci mais le lien n'est pas bon merci de modifier.
OriginalL'auteur AppleDash | 2012-11-24
Vous devez vous connecter pour publier un commentaire.
Votre itérateur n'est pas correctement initialisé (
next()
n'a pas été appelé). Je suggère d'écrire ce code comme ceci:Bien que le code vous montrer des travaux, votre réponse n'est pas correcte, car il n'y a aucun rapport entre le caché itérateur utilisé dans la boucle et itérateur utilisé dans le
if
bloc. Leremove
méthode n'est pas parce qu'il est appelé sur un itérateur n'a pas encore commencé, comme @Evgeniy justement. Le même résultat pourrait être obtenu en appelantconfigItems.remove(c)
à l'intérieur de laif
.Vous êtes de droite. Merci. Texte édité.
J'ai eu exigence complexe. Il y avait imbriquée itérateur. Sur l'état de l'intérieur itérateur avoir à retirer l'objet à partir de l'itérateur. le
break
déclaration de votre réponse m'a beaucoup aidé. Merci pour le partageOriginalL'auteur bellum
Vous pouvez appeler Itérateur.remove() après un Itérateur.next(). Essayez ceci:
OriginalL'auteur Evgeniy Dorofeev