迭代器遍历过程中,通过集合对象修改了集合中而定元素的长度,造成迭代器获取元素中判断预期修改值和实际值不一致
解决方法,用for遍历循环,然后用集合对象做对应的操作即可。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Binfa {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
Iterator<String> it = list.iterator();//ctrl+alt+v
// while (it.hasNext()){
// String s = it.next();//每次都会判断实际修改值与预期修改值
//如果不同就会抛出异常
// if(s.equals("java")){
// list.add("javaee");
// }
// }//下面的get方法里面并没有这个判断所以并不会抛出异常
for(int i=0;i<list.size();i++){
String s = list.get(i);
if(s.equals("java")){
list.add("javaee");
}
}
System.out.println(list);
}
}
列表迭代器 可以用来添加元素
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Binfa {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
//获取列表迭代器
ListIterator<String> it = list.listIterator();
while (it.hasNext()){
String s = it.next();
if(s.equals("java")){
it.add("javaee");
}
}//下面的get方法里面并没有这个判断所以并不会抛出异常
// for(int i=0;i<list.size();i++){
// String s = list.get(i);
// if(s.equals("java")){
// list.add("javaee");
// }
// }
System.out.println(list);
}
}