1

私はこのようなHashMapを持っています、

HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();

に要素を追加する前にやろうとしていますmap

  1. が存在するかどうかを確認したいkey場合は、 を使用して取得できますmap.containsKey()
  2. キーが存在する場合は、そのキーに対応するサイズを確認Setします。
  3. size <= 1 そのセットに要素を追加したい場合。
4

3 に答える 3

3

次のように聞こえます。

HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();

Set<String> value = map.get("key");
if(value != null) {        
    if(value.size() <= 1) {
        value.add("some value");
    }
} else {
    map.put("key", new HashSet<String>());
}

ここで、最後のポイントの表現が不十分であったか (つまり、キーに関連付けられた Set を更新したい)、または本当にキー自体を更新したい場合は、おそらくキーを削除して新しいエントリを追加する必要があります。

于 2012-09-26T07:17:41.587 に答える
3

containsKey と get は使用しません。これは、ルックアップが 1 つしか必要ない場合に 2 つのルックアップを意味するためです。

private final Map<String,Set<String>> map = new HashMap<String,Set<String>>();

Set<String> set = map.get(key);
if(set != null && set.size() <= 1) 
    set.add(some$value);

nullこれに関する唯一の問題は、どこかに設定しない限り、値が常に

private final Map<String,Set<String>> map = new HashMap<String,Set<String>>();

Set<String> set = map.get(key);
if(value != null)
    map.put(key, set = new HashSet<String>());
if (set.size() <= 1) 
    set.add(some$value);

珍しく最大サイズ2個セットですが、何か理由はありますか?

于 2012-09-26T07:24:46.997 に答える
1

map.get(String key) を使用してマップからセットを取得できます。

次に、セットのサイズをテストします。必要に応じて、要素を追加します。

map.remove(String key) を使用してマップから古いセットを削除し、put(String, Set); を使用して再挿入するだけです。

于 2012-09-26T07:19:15.783 に答える