私はこのようなHashMapを持っています、
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
に要素を追加する前にやろうとしていますmap
、
- が存在するかどうかを確認したい
key
場合は、 を使用して取得できますmap.containsKey()
。 - キーが存在する場合は、そのキーに対応するサイズを確認
Set
します。 size <= 1
そのセットに要素を追加したい場合。
私はこのようなHashMapを持っています、
HashMap<String,Set<String>> map = new HashMap<String,Set<String>>();
に要素を追加する前にやろうとしていますmap
、
key
場合は、 を使用して取得できますmap.containsKey()
。Set
します。size <= 1
そのセットに要素を追加したい場合。次のように聞こえます。
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 を更新したい)、または本当にキー自体を更新したい場合は、おそらくキーを削除して新しいエントリを追加する必要があります。
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個セットですが、何か理由はありますか?
map.get(String key) を使用してマップからセットを取得できます。
次に、セットのサイズをテストします。必要に応じて、要素を追加します。
map.remove(String key) を使用してマップから古いセットを削除し、put(String, Set); を使用して再挿入するだけです。