java.util.ConcurrentModificationException problem

前端 未结 2 578
醉酒成梦
醉酒成梦 2021-02-19 01:22

On this code I get an java.util.ConcurrentModificationException the method is in a webservice and first reads the file and checks if the vakNaam is in the file. Then it will be

相关标签:
2条回答
  • 2021-02-19 01:49

    The Java 5 enhanced for loop uses an Iterator underneath. So When you remove from tempFile the fail fast nature kicks in and throws the Concurrent exception. Use an iterator and call its remove method, which will remove from the underlying Collection.

    0 讨论(0)
  • 2021-02-19 02:00

    The error is in this part:

    for (String s : tempFile){
        String [] splitted = s.split(" ");
        if (splitted[0].equals(naam)){
            tempFile.remove(s);
            found = true;   
        }
    } 
    

    Don't modify the list you are iterating over. You could solve this by using the Iterator explicitely:

    for (Iterator<String> it = tempFile.iterator(); it.hasNext();) {
        String s = it.next();
        String [] splitted = s.split(" ");
        if (splitted[0].equals(naam)){
            it.remove();
            found = true;   
        }
    } 
    
    0 讨论(0)
提交回复
热议问题