1

キーに文字列、値に整数を含むJavaマップがあります。5より大きい値を持たない特定のエントリ(キー/値)をこのマップから削除したいのですが、これを行う方法を誰かが教えてくれますか?

ありがとう!

4

2 に答える 2

4

通常のマップしかない場合 (つまり、逆マッピングを実装する追加のデータ構造がない場合)、最適なオプションは、値セットを繰り返し、各値をテストIterator.remove()し、関連する値を削除するために使用することです。

二次データ構造がある場合は、それを使用して削除するエントリを特定できる場合があります。ただし、「コスト」は、そのようなデータ構造を表すにはスペースが必要であり、更新に時間がかかることです...そしてコードはより複雑になります。

于 2012-06-16T06:48:20.370 に答える
1

Ok!私は次のように仕事をしました。スティーブン C に感謝:

Iterator<Map.Entry<String,Integer>> iter = TestMap.entrySet().iterator();
while (iter.hasNext()) {
    Map.Entry<String,Integer> entry = iter.next();
    if(entry.getValue() <= 5){
        iter.remove();
    }
}
于 2012-06-16T07:04:30.427 に答える