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)