How to remove current element from List in java

Viewed 1664

How do I remove current element from list while iterating using for loop?

I have below a list containing:

List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("a2");
        list.add("a3");
        list.add("a4");
        list.add("a5");
        list.add("a6");
        list.add("a7");
        list.add("a8");
        list.add("a9");
        list.add("a10");
        list.add("a11");
        list.add("a12");
        list.add("a13");
        list.add("a14");
        list.add("a15");


        List<List<String>> parts = chopped(list, 4);
        System.out.println(parts);

which gives me output below like this:

[[a, a2, a3, a4], [a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]

Now I am trying to remove first list from the list in below program:

for(int i=0; i<parts.size(); i++){

    System.out.println("Loop number: "+i);
    System.out.println("Current list: "+parts);         

    Thread.sleep(2000);
    parts.remove(i);

    System.out.println("After removing: "+parts);
}

Here I am using parts.remove(i); to remove current element, it gives me the following output:

[[a, a2, a3, a4], [a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
Loop number: 0
Current list: [[a, a2, a3, a4], [a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
After removing: [[a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
Loop number: 1
Current list: [[a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
After removing: [[a5, a6, a7, a8], [a13, a14, a15]]

This one removes first current element [a, a2, a3, a4] which is correct but in running second loop it removes [a9, a10, a11, a12].

I want to remove it loop wise like below:

[[a, a2, a3, a4], [a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
[[a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
[[a9, a10, a11, a12], [a13, a14, a15]]
[[a13, a14, a15]]
[]

Edited:

When I try to access List inside List using parts.get(loopNumber) or parts.get(i)` it throws an exception error:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at gmailSendLaptopGUI.MyProgram.main(MyProgram.java:156)
3 Answers
Related