代碼:
Iterator<StageDO> iterator = subCatalogue.getStages().iterator();
while (iterator.hasNext()) {
if (requestVO.getStages() != null) {
StageDO next = iterator.next();
String id = next.getId();
if (requestmap.get(id) != null) {
next.setName(requestmap.get(id).toString());
} else {
iterator.remove();
}
} else {
iterator.next();
iterator.remove();
}
}
我們在用迭代刪除(Iterator.remove())時,可能會因為沒有“it.next();”這一行, 拋出java.lang.IllegalStateException異常,原因是通過Iterator來刪除集合中某一個不滿足條件的元素時,首先需要使用next方法迭代出集合中的元素 ,然后才能調用remove方法,否則集合可能會因為對同一個Iterator remove了多次而拋出java .lang.IllegalStateException異常。
記得在循環體中別忘了iterator.next()