5

ハッシュマップを反復処理する方法がいくつかあることは知っていますが、(新しいハッシュマップを作成して古いものを取り除く以外に) ハッシュマップを変更する良い方法は何ですか?

私は何かが欲しい

for (Map.Entry<String, Integer> entry : wordcounts.entrySet()) {
    String key = entry.getKey();
    Integer value = entry.getValue();
    if(blacklist.contains(key))
        //remove key/value for that key from wordcounts
    if(mappings.contains(key))
     //change key in wordcounts from one string to another based on the key's value in a <string,string> map (mappings)
}

途中でマップを変更することはできますか? イテレータを使用する必要がありますか?

4

3 に答える 3

1

Map.Entry.setValueマッピングの値を変更するために使用します。マッピングを削除する場合setValue(null)Iterator.

于 2013-07-08T17:19:58.073 に答える
0

イテレーション中にアイテムを削除しようとしないでください。イテレータから例外が発生します。最善の策は、次のいずれかです

a) 新しいマップに反復/コピーしてマップを複製するか、b) 削除するアイテムを追跡し、反復が完了したらそれらを削除します。

キーを変更している場合も同じことが当てはまります。繰り返しを行った後、追跡して削除/追加を行ってください。

価値観を変えるだけなら、それを選んでください。

于 2013-07-08T17:28:37.097 に答える