从属性中删除元素

时间:2012-09-05 14:03:29

标签: java properties

为了避免ConcurrentModificationException,我采取以下措施:

        List<String> tobeRemoved = new ArrayList<String>();

        for (Object propertyKey : suppliedContent.keySet()) {
            key = (String) propertyKey;

            if (EqualityUtils.isMatching(rgx, key)) {
                tobeRemoved.add(key);
            }
        }

        for (String o : tobeRemoved) {
            suppliedContent.remove(o);
        }

有更清洁的方式吗?

2 个答案:

答案 0 :(得分:4)

我认为使用iterator并在remove()上调用iterator时匹配也会这样做。

Iterator<String> supplieIter  = suppliedContent.keySet().iterator();

    while(supplieIter.hasNext()){
        key = supplieIter.next();

        if (EqualityUtils.isMatching(rgx, key)) {
           supplieIter.remove()
        }
    }

编辑:手动键入的代码。可能存在语法错误。

答案 1 :(得分:2)

您可以使用像

这样的Iterator.remove()
Properties suppliedContent = ...
for (Iterator iter = suppliedContent.keySet().iterator(); iter.hasNext(); ) 
    if (EqualityUtils.isMatching(rgx, (String) iter.next())) 
        iter.remove();