6

ブール値をこのハッシュマップにすばやく変更する方法に興味があります。

HashMap<String, Boolean> selectedIds = new HashMap<>(); 

ブール値をすべて真に置き換えたいと思います。どうすればこれを行うことができますか?

4

2 に答える 2

11

最速の方法はこれです:

for (Map.Entry<String, Boolean> entry : selectedIds.entrySet()) {
    entry.setValue(true);
}

このコードは、マップのエントリ全体を繰り返し処理し、それらの値を直接設定するため、ルックアップを一切回避します。

が呼び出されるたびHashMap.put()に、キーのルックアップが internal で発生することに注意してくださいHashtable。コードは高度に最適化されていますが、ハッシュコードを計算して比較し、アルゴリズムを使用して最終的にエントリ (存在する場合) を見つける作業が必要です。これはすべて「作業」であり、CPU サイクルを消費します。


Java 8 の更新:

replaceAll()Java 8 では、このような目的のために新しいメソッドが導入され、必要なコードがさらに単純になりました。

selectedIds.replaceAll((k, v) -> true);
于 2012-05-24T14:20:28.470 に答える
5

これにより、マップが繰り返され、すべての古い値が各キーの真の値に置き換えられます。HashMap put メソッド

for(String s : selectedIds.keySet()) {
    selectedIds.put(s, true);
 }
于 2012-05-24T14:16:04.860 に答える