Iterator的安全失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响。java.util包下面的所有的集合类都是快速失败的,而java.util.concurrent包下面的所有的类都是安全失败的。快速失败的迭代器会抛出ConcurrentModificationException异常,而安全失败的迭代器永远不会抛出这样的异常。
    几乎所有的集合类都实现了ListIterator,如linkedlist,就会用内部类Listltr实现Listlterator,实现fast-fail机制。
    1:如果在多线程情况下对集合操作会触发fast-fail机制,concurrentmodificationException,建议换成线程安全的集合类
    2:如果在线程安全情况下,如果用迭代器 remove元素也会引发异常,如果非要remove,可以调用迭代器的remove方法而不是集合类的remove方法