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 に答える