[Java拾遗]迭代list过程中删除元素
今天在翻看HDFS中FSImage初始化部分时,其中有段代码是这样的:
for (URI dirName : fsNameDirs) { boolean isAlsoEdits = false; for (URI editsDirName : fsEditsDirs) { if (editsDirName.compareTo(dirName) == 0) { isAlsoEdits = true; fsEditsDirs.remove(editsDirName); break; } }}List<String> list = new ArrayList<String>();list.add("a");list.add("b");list.add("c");for (String str : list) { if (str.equals("a")) { list.remove(str); }}System.out.println(list);List<String> list = new ArrayList<String>();list.add("a");list.add("b");list.add("c");for (String str : list) { if (str.equals("b")) { list.remove(str); }}System.out.println(list);public boolean hasNext() { return cursor != size();}public E next() { checkForComodification(); try { E next = get(cursor++); return next; } catch (IndexOutOfBoundsException e) { checkForComodification(); throw new NoSuchElementException(); }}final void checkForComodification() { if (modCount != expectedModCount) throw new ConcurrentModificationException(); }}