Java - Error when removing from an ArrayList more than once. (IllegalStateException)
arraylist, exception, java, minecraft
Solution
Your iterator wasn't initialized properly (`next()` was not called). I suggest to write this code like this:
Iterator<ConfigItem> it = configItems.iterator();
while(it.hasNext()){
ConfigItem c = it.next();
if (c.ITEM.equals(item))
{
it.remove();
break;
}
}
Problem
I've been googling around for quite a bit, and can't seem to find a solution. What have I done wrong here? My problem is in the title. Here is the exception I get: ``` 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) ``` And here is my 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(); } ```