1

我确信这经常出现,足以在某个地方解决它,但我不知道如何进一步搜索它。

我想修改键不在集合 B 中的映射中的值。最好的方法是什么?这是我的想法:

Map<X,Y> map = ...

Set<X> B = ...

for(Map.Entry<X, Y> entry : map.entrySet() ) {

    if( ! B.contains(entry.getKey()) {
        entry.setValue( someMethod(entry.getValue);

    }
}
4

1 回答 1

1

您目前拥有的应该可以正常工作。作为替代方案,您可以尝试这样的事情:

Map<X,Y> newMap = new HashMap<X,Y>(map);
newMap.keySet().removeAll(B);  // remove keys in the set B

for (Map.Entry<X, Y> entry : newMap.entrySet()) {
    entry.setValue(someMethod(entry.getValue());
}

map.putAll(newMap);

虽然我不得不说,如果我这样做,我会采取你目前的方法。

于 2012-12-31T21:49:54.047 回答