如何修改迭代器实际上会改变它迭代的列表?

时间:2014-10-08 18:02:49

标签: java oop iterator

我想在迭代它时修改一个列表但是意识到这不是一个好习惯,所以我不得不使用迭代器,但是我很惊讶修改迭代器会改变底层列表..

我希望在程序中使用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());
        }
    }

提前感谢...

0 个答案:

没有答案