我有一个将数据添加到列表的代码。我不明白为什么UnsupportedOperationException
在一种情况下和
ConcurrentModificationException
另一种情况下都会抛出。在这两种情况下,我都在列表中添加数据,然后在迭代列表时尝试删除列表数据。到目前为止,我所读到的是,每当对故障快速收集进行任何修改时,都会ConcurrentModificationException
被抛出。那么为什么在这两种情况下会有这种不同的行为呢?
List<String> animalList = new ArrayList<>();
animalList.add("cat");
animalList.add("dog");
animalList.add("bear");
animalList.add("lion");
Iterator<String> iter = animalList.iterator();
while(iter.hasNext()){
String animal = iter.next();
System.out.println(animal);
animalList.remove(3);
}
此代码抛出ConcurrentModificationException
String[] strings = { "Java", "Honk", "Test" };
List<String> list = Arrays.asList(strings);
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String name = iterator.next();
System.out.println(name);
list.remove(3);
}
而这个抛出UnsupportedOperationException