E - 元素类型public class CopiedIter<E> extends Object implements IterableIter<E>, Serializable
IteratorIterator遍历导致的问题(当Iterator被修改会抛出ConcurrentModificationException)
,故使用复制原Iterator的方式解决此问题。
解决方法为:在构造方法中遍历Iterator中的元素,装入新的List中然后遍历之。 当然,修改这个复制后的Iterator是没有意义的,因此remove方法将会抛出异常。
需要注意的是,在构造此对象时需要保证原子性(原对象不被修改),最好加锁构造此对象,构造完毕后解锁。
| Constructor and Description |
|---|
CopiedIter(Iterator<E> iterator)
构造
|
| Modifier and Type | Method and Description |
|---|---|
static <E> CopiedIter<E> |
copyOf(Iterator<E> iterator)
根据已有
Iterator,返回新的CopiedIter |
boolean |
hasNext() |
E |
next() |
void |
remove()
此对象不支持移除元素
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waititeratorforEach, spliteratorforEachRemainingpublic static <E> CopiedIter<E> copyOf(Iterator<E> iterator)
Iterator,返回新的CopiedIterE - 元素类型iterator - IteratorCopiedIterpublic void remove()
throws UnsupportedOperationException
remove in interface Iterator<E>UnsupportedOperationException - 当调用此方法时始终抛出此异常Copyright © 2025. All rights reserved.