我想在迭代它时修改一个列表但是意识到这不是一个好习惯,所以我不得不使用迭代器,但是我很惊讶修改迭代器会改变底层列表..
我希望在程序中使用item
,但如果它包含特定值,则修改它。迭代器如何实际执行此操作?我的意思是item
没有被修改,名为domainCDCIter
的迭代器对象是我们称之为.remove()
的那个......这将如何导致item
被修改?< / p>
有人能揭开神秘面纱吗?
Iterator<DomainCDC> domainCDCIter = item.getChangeList().iterator();
while (domainCDCIter.hasNext())
{
// if record is populated with DELETE, we want to remove it from changeList.
final DomainCDC domainCDC = domainCDCIter.next();
if(StringUtils.isNotEmpty(domainCDC.getEvent()) && domainCDC.getEvent().equals("DELETE")){
deleteFromSearchList.add(domainCDC);
deletableDomainCDCStatusMap.put(domainCDC.getObjectId(), domainCDC.getDomainCDCStatus());
domainCDCIter.remove();
} else{
indexableDomainCDCStatusMap.put(domainCDC.getObjectId(), domainCDC.getDomainCDCStatus());
}
}
提前感谢...