import java.util.Collection; import java.util.HashSet; import java.util.Iterator; class SimpleIterator { public static void removeLongStrings(Collection c, int maxLen) { Iterator it = c.iterator(); while (it.hasNext()) { String str = it.next(); if (str.length() > maxLen) { it.remove(); } } } public static void brokenRemoveLongStrings(Collection c, int maxLen) { for (String str : c) { if (str.length() > maxLen) { c.remove(str); // error: removing element inside for-each } } } public static void main(String[] args) { Collection bag = new HashSet(); bag.add(new String("Some text")); bag.add(new String("Some longer text")); bag.add(new String("Some very very very long text")); System.out.println(bag); removeLongStrings(bag, 15); // brokenRemoveLongStrings(bag, 15); commented out to avoid exception System.out.println(bag); } }