E - 元素类型public class CopiedIter<E>
extends java.lang.Object
implements java.util.Iterator<E>, java.lang.Iterable<E>
IteratorIterator遍历导致的问题(当Iterator被修改会抛出ConcurrentModificationException)
,故使用复制原Iterator的方式解决此问题。
解决方法为:在构造方法中遍历Iterator中的元素,装入新的List中然后遍历之。 当然,修改这个复制后的Iterator是没有意义的,因此remove方法将会抛出异常。
需要注意的是,在构造此对象时需要保证原子性(原对象不被修改),最好加锁构造此对象,构造完毕后解锁。
| 构造器和说明 |
|---|
CopiedIter(java.util.Iterator<E> iterator)
构造
|
public CopiedIter(java.util.Iterator<E> iterator)
iterator - 被复制的Iteratorpublic static <V> CopiedIter<V> copyOf(java.util.Iterator<V> iterator)
public boolean hasNext()
hasNext 在接口中 java.util.Iterator<E>public void remove()
throws java.lang.UnsupportedOperationException
remove 在接口中 java.util.Iterator<E>java.lang.UnsupportedOperationException - 当调用此方法时始终抛出此异常Copyright © 2018. All rights reserved.