Iterator
Iterator 介绍
Iterator 迭代器,Collection 集合体系的遍历方式之一。
Iterator 常用方法
* boolean hasNext();
* E next();
* default void remove();
Iterator 使用
Collection<String> list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
// 迭代器遍历集合
Iterator<String> iterator = list.iterator();// 创建迭代器对象,创建指针
while (iterator.hasNext()) {// boolean hasNext = iterator.hasNext();// 判断是否有元素
String str = iterator.next();// 1.获取元素,2.移动指针
if (str.equals("bbb")) {
// list.remove("bbb");// 会报ConcurrentModificationException 并发修改异常
iterator.remove();
}
}
Iterator MST
Q1:迭代器遍历的时候能不能调用集合的方法进行添加或者删除?
A:不能
迭代器遍历的时候,不能调用集合的添加或者删除的方法进行修改数据;
会报ConcurrentModificationException (并发修改异常)异常;
如果要在迭代器遍历的时候操作集合,可以使用迭代器提供的方法;
Iterator只提供了一个remove方法删除元素用的,想要其他操作暂时不支持。
Iterator 源码
public interface Iterator<E> {
boolean hasNext();
E next();
default void remove() {
throw new UnsupportedOperationException("remove");
}
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
}