Say I have a List like:
List<String> list = new ArrayList<>();
list.add("a");
list.add("h");
list.add("f");
list.add("s");
While iterating through this list I want to add an element at the end of the list. But I don’t want to iterate through the newly added elements that is I want to iterate up to the initial size of the list.
for (String s : list)
/* Here I want to add new element if needed while iterating */
Can anybody suggest me how can I do this?
You can’t use a foreach statement for that. The foreach is using internally an iterator:
(From ArrayList javadoc)
In the foreach statement you don’t have access to the iterator’s add method and in any case that’s still not the type of add that you want because it does not append at the end. You’ll need to traverse the list manually:
Note that this is only efficient for Lists that allow random access. You can check for this feature by checking whether the list implements the RandomAccess marker interface. An ArrayList has random access. A linked list does not.