List
while(iterator.hasNext()) {
String fruit = iterator.next();
if("banana".equals(fruit)) {
iterator.remove(); // 安全地移除香蕉
}
}
List
while(iterator.hasNext()) {

String item = iterator.next();
if("B".equals(item)) {
list.remove(item); // 这里会抛出ConcurrentModificationException
}
}
// ArrayList遍历
List
String item = arrayIterator.next();
// 处理逻辑
} long arrayTime = System.currentTimeMillis() - start;

// LinkedList遍历
List
String item = linkedIterator.next();
// 相同处理逻辑
} long linkedTime = System.currentTimeMillis() - start;
public class DirectoryIterator implements Iterator
private Queue<File> queue = new LinkedList<>();
public DirectoryIterator(File root) {
if(root.isDirectory()) {
queue.offer(root);
}
}
@Override
public boolean hasNext() {
return !queue.isEmpty();
}
@Override
public File next() {
if(!hasNext()) {
throw new NoSuchElementException();
}
File current = queue.poll();
if(current.isDirectory()) {
File[] children = current.listFiles();
if(children != null) {
for(File child : children) {
queue.offer(child);
}
}
}
return current;
}
}