Machine-translated by Google. Questions are authored in English.
Top

Discussion

What will be the output of the program?

import java.util.*;

public class Sketch11
{
    public static void main(String[] args)
    {
        List<String> l = new ArrayList<String>(
            Arrays.asList("a", "b", "c"));
        for (String s : l)
        {
            if (s.equals("b")) l.remove(s);
        }
        System.out.println(l);
    }
}

  • A.The program prints [a]
  • B.The program prints [a, c]
  • C.A ConcurrentModificationException is thrown.
  • D.The program prints [a

Answer: C

Structurally modifying a list while a for-each iterator is walking it invalidates that iterator, and the next call to next() throws ConcurrentModificationException. The removal itself succeeds first, but the loop cannot continue. Iterator.remove is the supported way to do this.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.